diff --git a/deprecated-swagger-components/_bank_fixed_incomes_apis_part.yml b/deprecated-swagger-components/_bank_fixed_incomes_apis_part.yml index 90143b392..7dece5c15 100644 --- a/deprecated-swagger-components/_bank_fixed_incomes_apis_part.yml +++ b/deprecated-swagger-components/_bank_fixed_incomes_apis_part.yml @@ -3,7 +3,7 @@ info: title: API Bank Fixed Incomes - Open Finance Brasil description: | API de informações de operações de Renda Fixa Bancária Open Finance Brasil (Fase 4). API que retorna informações de operações de investimento do tipo Renda Fixa Bancária (CDB/RDB, LCI e LCA) mantidas nas instituições transmissoras por seus clientes, incluindo dados como denominação do produto, rentabilidade, quantidade, prazos, saldos em posição do cliente e movimentações financeiras. Não possui segregação entre pessoa natural e pessoa jurídica. Requer consentimento do cliente para todos os endpoints. A exposição se dará por cada operação de renda fixa contratada pelo cliente. - version: 1.0.0-rc1.0 + version: 1.0.0-rc2.0 license: name: Apache 2.0 url: "https://www.apache.org/licenses/LICENSE-2.0" @@ -24,9 +24,9 @@ tags: - name: Balances description: Obtém a posição da operação de Renda Fixa Bancária identificada por investmentId. - name: Transactions - description: Obtém as movimentações históricas (últimos 12 meses) da operação de Fundos de Investimento identificada por investmentId. + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Bancária identificada por investmentId. - name: Transactions Current - description: Obtém as movimentações recentes da operação de Fundos de Investimento identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6). + description: Obtém as movimentações recentes da operação de Renda Fixa Bancária identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6). paths: /investments: @@ -75,11 +75,10 @@ paths: 'default': $ref: '#/components/responses/DefaultWithAdditionalProperties' security: - - OpenId: - - 'openid' - OAuth2Security: - - 'consent:consentId' - - 'bank-fixed-incomes' + - OAuth2AuthorizationCode: + - openid + - consent:consentId + - bank-fixed-incomes /investments/{investmentId}: get: @@ -125,11 +124,10 @@ paths: 'default': $ref: '#/components/responses/DefaultWithAdditionalProperties' security: - - OpenId: - - 'openid' - OAuth2Security: - - 'consent:consentId' - - 'bank-fixed-incomes' + - OAuth2AuthorizationCode: + - openid + - consent:consentId + - bank-fixed-incomes /investments/{investmentId}/balances: get: @@ -182,19 +180,18 @@ paths: 'default': $ref: '#/components/responses/DefaultWithAdditionalProperties' security: - - OpenId: - - 'openid' - OAuth2Security: - - 'consent:consentId' - - 'bank-fixed-incomes' + - OAuth2AuthorizationCode: + - openid + - consent:consentId + - bank-fixed-incomes /investments/{investmentId}/transactions: get: tags: - Transactions - summary: Obtém as movimentações históricas (últimos 12 meses) da operação de Fundos de Investimento identificada por investmentId. + summary: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Bancária identificada por investmentId. operationId: banktFixedIncomesGetInvestmentsInvestmentIdTransactions - description: Obtém as movimentações históricas (últimos 12 meses) da operação de Fundos de Investimento identificada por investmentId. + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Bancária identificada por investmentId. parameters: - $ref: '#/components/parameters/InvestmentId' - $ref: '#/components/parameters/Authorization' @@ -237,19 +234,18 @@ paths: 'default': $ref: '#/components/responses/TransactionsDefaultWithAdditionalProperties' security: - - OpenId: - - 'openid' - OAuth2Security: - - 'consent:consentId' - - 'bank-fixed-incomes' + - OAuth2AuthorizationCode: + - openid + - consent:consentId + - bank-fixed-incomes /investments/{investmentId}/transactions-current: get: tags: - Transactions Current - summary: Obtém as movimentações recentes da operação de Fundos de Investimento identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6). + summary: Obtém as movimentações recentes da operação de Renda Fixa Bancária identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6). operationId: banktFixedIncomesGetInvestmentsInvestmentIdTransactionsCurrent - description: Obtém as movimentações recentes da operação de Fundos de Investimento identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6). + description: Obtém as movimentações recentes da operação de Renda Fixa Bancária identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6). parameters: - $ref: '#/components/parameters/InvestmentId' - $ref: '#/components/parameters/Authorization' @@ -292,11 +288,10 @@ paths: 'default': $ref: '#/components/responses/TransactionsDefaultWithAdditionalProperties' security: - - OpenId: - - 'openid' - OAuth2Security: - - 'consent:consentId' - - 'bank-fixed-incomes' + - OAuth2AuthorizationCode: + - openid + - consent:consentId + - bank-fixed-incomes components: schemas: ResponseError: @@ -315,8 +310,8 @@ components: $ref: ./schemas/bank_fixed_incomes_apis/IdentifyProduct.yaml EnumInvestmentType: $ref: ./schemas/bank_fixed_incomes_apis/EnumInvestmentType.yaml - EnumInvestmentsFixedIncomeBankIndexer: - $ref: ./schemas/enum/EnumInvestmentsFixedIncomeBankIndexer.yaml + EnumBankFixedIncomeIndexer: + $ref: ./schemas/bank_fixed_incomes_apis/EnumBankFixedIncomeIndexer.yaml Remuneration: $ref: ./schemas/bank_fixed_incomes_apis/Remuneration.yaml EnumRateType: @@ -344,18 +339,15 @@ components: BalanceAmount: $ref: ./schemas/bank_fixed_incomes_apis/BankFixedIncomesBalancesAmount.yaml securitySchemes: - OpenId: - type: openIdConnect - openIdConnectUrl: 'https://auth.mockbank.poc.raidiam.io/.well-known/openid-configuration' - OAuth2Security: + OAuth2AuthorizationCode: type: oauth2 - description: "Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados." + description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados. flows: authorizationCode: - authorizationUrl: "https://authserver.example/authorization" - tokenUrl: "https://authserver.example/token" + authorizationUrl: 'https://authserver.example/authorization' + tokenUrl: 'https://authserver.example/token' scopes: - bank_fixed_incomes: "Escopo necessário para acesso à API Bank Fixed Incomes. O controle dos endpoints específicos é feito via permissions." + bank_fixed_incomes: Escopo necessário para acesso à API Bank Fixed Incomes. O controle dos endpoints específicos é feito via permissions. parameters: InvestmentId: $ref: ./parameters/InvestmentId.yaml diff --git a/deprecated-swagger-components/schemas/bank_fixed_incomes_apis/BankFixedIncomesProductMovement.yaml b/deprecated-swagger-components/schemas/bank_fixed_incomes_apis/BankFixedIncomesProductMovement.yaml index 58c05169c..cf6ccf3a7 100644 --- a/deprecated-swagger-components/schemas/bank_fixed_incomes_apis/BankFixedIncomesProductMovement.yaml +++ b/deprecated-swagger-components/schemas/bank_fixed_incomes_apis/BankFixedIncomesProductMovement.yaml @@ -13,7 +13,7 @@ properties: $ref: ./EnumBankFixedIncomeMovementType.yaml transactionType: $ref: ./EnumBankFixedIncomeTransactionType.yaml - typeAdditionalInfo: + trasanctionTypeAdditionalInfo: type: string maxLength: 100 pattern: '[\w\W\s]*' diff --git a/deprecated-swagger-components/schemas/bank_fixed_incomes_apis/EnumBankFixedIncomeIndexer.yaml b/deprecated-swagger-components/schemas/bank_fixed_incomes_apis/EnumBankFixedIncomeIndexer.yaml new file mode 100644 index 000000000..8d802183a --- /dev/null +++ b/deprecated-swagger-components/schemas/bank_fixed_incomes_apis/EnumBankFixedIncomeIndexer.yaml @@ -0,0 +1,16 @@ +type: string +description: Índice utilizado como referência para a correção da rentabilidade e/ou rendimentos do ativo (CDI, DI , TR, IPCA, IGP_M, IGP_DI, INPC, BCP, TLC, SELIC, PRE_FIXADO e OUTROS) +enum: + - CDI + - DI + - TR + - IPCA + - IGP_M + - IGP_DI + - INPC + - BCP + - TLC + - SELIC + - PRE_FIXADO + - OUTROS +example: CDI diff --git a/deprecated-swagger-components/schemas/bank_fixed_incomes_apis/Remuneration.yaml b/deprecated-swagger-components/schemas/bank_fixed_incomes_apis/Remuneration.yaml index ff9f9ca64..a1f89855d 100644 --- a/deprecated-swagger-components/schemas/bank_fixed_incomes_apis/Remuneration.yaml +++ b/deprecated-swagger-components/schemas/bank_fixed_incomes_apis/Remuneration.yaml @@ -39,7 +39,7 @@ properties: calculation: $ref: ./EnumCalculation.yaml indexer: - $ref: ../enum/EnumInvestmentsFixedIncomeBankIndexer.yaml + $ref: ./EnumBankFixedIncomeIndexer.yaml indexerAdditionalInfo: type: string description: | diff --git a/deprecated-swagger-components/schemas/enum/EnumInvestmentsFixedIncomeBankIndexer.yaml b/deprecated-swagger-components/schemas/enum/EnumInvestmentsFixedIncomeBankIndexer.yaml index 34110bcce..26eafc164 100644 --- a/deprecated-swagger-components/schemas/enum/EnumInvestmentsFixedIncomeBankIndexer.yaml +++ b/deprecated-swagger-components/schemas/enum/EnumInvestmentsFixedIncomeBankIndexer.yaml @@ -1,6 +1,6 @@ type: string description: | - – Qualquer operação com taxa mista em CDI, DI, SELIC deverá ser ignorada - serão consideradas apenas taxas sem cupom + – Qualquer operaçrão com taxa mista em CDI, DI, SELIC deverá ser ignorada - serão consideradas apenas taxas sem cupom – No caso do pré-fixado será utilizado apenas o cupom, mesmo que haja outro indexador misturado – No caso de TR, IPCA, IGP_M, IGP_DI, INPC, BCP, TLC E OUTROS, o cálculo será feito em cima do cupom (mesmo que ele seja zero), desconsiderando as operações que tenham indexador diferente de 100% diff --git a/dictionary/banktFixedIncomesGetInvestmentsInvestmentIdBalances_v1.csv b/dictionary/banktFixedIncomesGetInvestmentsInvestmentIdBalances_v1.csv index b22b33ea0..8dd2e726f 100644 --- a/dictionary/banktFixedIncomesGetInvestmentsInvestmentIdBalances_v1.csv +++ b/dictionary/banktFixedIncomesGetInvestmentsInvestmentIdBalances_v1.csv @@ -11,27 +11,25 @@ /data/netAmount;netAmount;Valor do investimento atualizado na data de referência, posterior a dedução de impostos (IOF e IR).;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/netAmount/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.0004; /data/netAmount/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/incomeTax;incomeTax;Valor do imposto considerando a alíquota vigente na data de referência.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/incomeTax;incomeTax;Valor do imposto de renda provisionado considerando a alíquota vigente na data de referência.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/incomeTax/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.0004; /data/incomeTax/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/financialTransactionTax;financialTransactionTax;Valor do imposto (IOF) considerando a alíquota vigente na data de referência.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/financialTransactionTax;financialTransactionTax;Valor do imposto (IOF) provisionado considerando a alíquota vigente na data de referência.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/financialTransactionTax/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.0004; /data/financialTransactionTax/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/blockedBalance;blockedBalance;Valor líquido não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros).;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/blockedBalance;blockedBalance;Valor não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros). Prazo de carência não é considerado como bloqueio.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/blockedBalance/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.0004; /data/blockedBalance/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; /data/purchaseUnitPrice;purchaseUnitPrice;Valor unitário negociado com o cliente na data de aquisição;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/purchaseUnitPrice/amount;amount;Valor relacionado ao objeto.;Texto;24;Obrigatório;^\d{1,15}\.\d{2,8}$;;1;1;"";Não permitido;string;1000.000004; /data/purchaseUnitPrice/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/preFixedRate;preFixedRate;"Taxa de remuneração acordada com o cliente na contratação. Em casos de produtos progressivos, considerar taxa vigente. p.ex. 0.014500. -O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros(representação de porcentagem p.ex: 0.150000. Este valor representa 15%. O valor 1 representa 100%). - -[Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'PRE_FIXADO' no campo 'indexer' ou quando se tratar de produto com remuneração híbrida. -";Texto;8;Condicional;^\d{1}\.\d{6}$;;0;1;" Campo de preenchimento obrigatório pelas participantes quando houver 'PRE_FIXADO' no campo 'indexer' ou quando se tratar de produto com remuneração híbrida. -";Não permitido;string;0.300000;8 -/data/postFixedIndexerPercentage;postFixedIndexerPercentage;"Percentual do indexador acordado com o cliente na contratação. Em casos de produtos progressivos, considerar taxa vigente. p.ex. 0.014500. -O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros(representação de porcentagem p.ex: 0.150000. Este valor representa 15%. O valor 1 representa 100%). - -[Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido de forma diferente de 'PRE_FIXADO' ou quando se tratar de produto com remuneração híbrida. -";Texto;8;Condicional;^\d{1}\.\d{6}$;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido de forma diferente de 'PRE_FIXADO' ou quando se tratar de produto com remuneração híbrida. -";Não permitido;string;1.000000;8 +/data/preFixedRate;preFixedRate;"Taxa de remuneração acordada com o cliente na contratação. +Em casos de produtos progressivos, considerar taxa vigente. p.ex. 0.014500. +O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros(representação de porcentagem p.ex: 0.150000. +Este valor representa 15%. O valor 1 representa 100%). É esperado que o preenchimento deste campo pelas participantes seja enviado de acordo com o campo preFixedRate do endpoint /investment/{investmentId}. +";Texto;8;Opcional;^\d{1}\.\d{6}$;;0;1;"";Não permitido;string;0.300000;8 +/data/postFixedIndexerPercentage;postFixedIndexerPercentage;"Percentual do indexador acordado com o cliente na contratação. +Em casos de produtos progressivos, considerar taxa vigente. p.ex. 0.014500. +O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros(representação de porcentagem p.ex: 0.150000. +Este valor representa 15%. O valor 1 representa 100%). É esperado que o preenchimento deste campo pelas participantes seja enviado de acordo com o campo postFixedIndexerPercentage do endpoint /investment/{investmentId}. +";Texto;8;Opcional;^\d{1}\.\d{6}$;;0;1;"";Não permitido;string;1.000000;8 diff --git a/dictionary/banktFixedIncomesGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv b/dictionary/banktFixedIncomesGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv index 995c530dd..70f0ea459 100644 --- a/dictionary/banktFixedIncomesGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv +++ b/dictionary/banktFixedIncomesGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv @@ -1,16 +1,24 @@ Xpath;Nome;Definição;Tipo de Dado;Tamanho;Mandatoriedade;Formato;Domínio;Mínimo de Ocorrências;Máximo de Ocorrências;Restrições;Nulidade;Tipo de Dado Json;Exemplo;Tamanho mínimo /data;data;;Lista;;Obrigatório;;;0;N;"";Não permitido;array;; -/data/type;type;"Tipo de movimentação na visão de investimento (entrada ou saída) . (Nos casos de motivo de pagamento ""pagamento de juros"" e ""amortização"", fica convencionado que será considerado que o tipo de movimento será saída).";Texto;;Obrigatório;;"ENTRADA +/data/type;type;"Tipo de movimentação na visão de investimento + +- ENTRADA: APLICACAO, CANCELAMENTO, TRANSFERENCIA_TITULARIDADE, TRANSFERENCIA_CUSTODIA, OUTROS. + +- SAIDA: RESGATE, CANCELAMENTO, VENCIMENTO, PAGAMENTO_JUROS, AMORTIZACAO, TRANSFERENCIA_TITULARIDADE, TRANSFERENCIA_CUSTODIA, OUTROS. + +Por exemplo, para movimentação de CANCELAMENTO, tipicamente, será o type contrário ao evento originário. Ou seja, para cancelamento de APLICACAO, considera-se type SAIDA; para cancelamento de RESGATE, considera-se type ENTRADA. +";Texto;;Obrigatório;;"ENTRADA SAIDA";1;1;"";Não permitido;string;ENTRADA; -/data/transactionType;transactionType;Aplicação, resgate, cancelamento, vencimento, pagamento de juros/amortização, transferência de titularidade, transferência de custódia e outros.;Texto;;Obrigatório;;"APLICACAO +/data/transactionType;transactionType;Aplicação, resgate, cancelamento, vencimento, pagamento de juros, amortização, transferência de titularidade, transferência de custódia e outros. Para movimentos de transferência (titularidade ou custódia) deve ser considerado o preço unitário (transactionUnitPrice) da aquisição do título.;Texto;;Obrigatório;;"APLICACAO RESGATE CANCELAMENTO VENCIMENTO -PAGAMENTO_JUROS_AMORTIZACAO +PAGAMENTO_JUROS +AMORTIZACAO TRANSFERENCIA_TITULARIDADE TRANSFERENCIA_CUSTODIA OUTROS";1;1;"";Não permitido;string;APLICACAO; -/data/typeAdditionalInfo;typeAdditionalInfo;"Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. +/data/transactionTypeAdditionalInfo;transactionTypeAdditionalInfo;"Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'Outros' no campo Motivo da movimentação. ";Texto;100;Condicional;[\w\W\s]*;;0;1;" Campo de preenchimento obrigatório pelas participantes quando houver 'Outros' no campo Motivo da movimentação. @@ -44,10 +52,10 @@ OUTROS";1;1;"";Não permitido;string;APLICACAO; [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. ";Texto;8;Condicional;^\d{1}\.\d{6}$;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. -";Não permitido;string;0.300000;3 +";Não permitido;string;0.300000;8 /data/indexerPercentage;indexerPercentage;"Percentual máximo do indexador acordado com o cliente na contratação. [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. ";Texto;8;Condicional;^\d{1}\.\d{6}$;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. -";Não permitido;string;1.100000;3 +";Não permitido;string;1.100000;8 /data/transactionId;transactionId;Código ou identificador único prestado pela instituição que mantém a representação individual do movimento.;Texto;100;Obrigatório;^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$;;1;1;"";Não permitido;string;ABCD2126019929279212650822221989319253344; diff --git a/dictionary/banktFixedIncomesGetInvestmentsInvestmentIdTransactions_v1.csv b/dictionary/banktFixedIncomesGetInvestmentsInvestmentIdTransactions_v1.csv index 143dd15b3..70f0ea459 100644 --- a/dictionary/banktFixedIncomesGetInvestmentsInvestmentIdTransactions_v1.csv +++ b/dictionary/banktFixedIncomesGetInvestmentsInvestmentIdTransactions_v1.csv @@ -1,16 +1,24 @@ Xpath;Nome;Definição;Tipo de Dado;Tamanho;Mandatoriedade;Formato;Domínio;Mínimo de Ocorrências;Máximo de Ocorrências;Restrições;Nulidade;Tipo de Dado Json;Exemplo;Tamanho mínimo /data;data;;Lista;;Obrigatório;;;0;N;"";Não permitido;array;; -/data/type;type;"Tipo de movimentação na visão de investimento (entrada ou saída) . (Nos casos de motivo de pagamento ""pagamento de juros"" e ""amortização"", fica convencionado que será considerado que o tipo de movimento será saída).";Texto;;Obrigatório;;"ENTRADA -SAÍDA";1;1;"";Não permitido;string;ENTRADA; -/data/transactionType;transactionType;Aplicação, resgate, cancelamento, vencimento, pagamento de juros/amortização, transferência de titularidade, transferência de custódia e outros.;Texto;;Obrigatório;;"APLICACAO +/data/type;type;"Tipo de movimentação na visão de investimento + +- ENTRADA: APLICACAO, CANCELAMENTO, TRANSFERENCIA_TITULARIDADE, TRANSFERENCIA_CUSTODIA, OUTROS. + +- SAIDA: RESGATE, CANCELAMENTO, VENCIMENTO, PAGAMENTO_JUROS, AMORTIZACAO, TRANSFERENCIA_TITULARIDADE, TRANSFERENCIA_CUSTODIA, OUTROS. + +Por exemplo, para movimentação de CANCELAMENTO, tipicamente, será o type contrário ao evento originário. Ou seja, para cancelamento de APLICACAO, considera-se type SAIDA; para cancelamento de RESGATE, considera-se type ENTRADA. +";Texto;;Obrigatório;;"ENTRADA +SAIDA";1;1;"";Não permitido;string;ENTRADA; +/data/transactionType;transactionType;Aplicação, resgate, cancelamento, vencimento, pagamento de juros, amortização, transferência de titularidade, transferência de custódia e outros. Para movimentos de transferência (titularidade ou custódia) deve ser considerado o preço unitário (transactionUnitPrice) da aquisição do título.;Texto;;Obrigatório;;"APLICACAO RESGATE CANCELAMENTO VENCIMENTO -PAGAMENTO_JUROS_AMORTIZACAO +PAGAMENTO_JUROS +AMORTIZACAO TRANSFERENCIA_TITULARIDADE TRANSFERENCIA_CUSTODIA OUTROS";1;1;"";Não permitido;string;APLICACAO; -/data/typeAdditionalInfo;typeAdditionalInfo;"Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. +/data/transactionTypeAdditionalInfo;transactionTypeAdditionalInfo;"Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'Outros' no campo Motivo da movimentação. ";Texto;100;Condicional;[\w\W\s]*;;0;1;" Campo de preenchimento obrigatório pelas participantes quando houver 'Outros' no campo Motivo da movimentação. @@ -44,10 +52,10 @@ OUTROS";1;1;"";Não permitido;string;APLICACAO; [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. ";Texto;8;Condicional;^\d{1}\.\d{6}$;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. -";Não permitido;string;0.300000;3 +";Não permitido;string;0.300000;8 /data/indexerPercentage;indexerPercentage;"Percentual máximo do indexador acordado com o cliente na contratação. [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. ";Texto;8;Condicional;^\d{1}\.\d{6}$;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. -";Não permitido;string;1.100000;3 +";Não permitido;string;1.100000;8 /data/transactionId;transactionId;Código ou identificador único prestado pela instituição que mantém a representação individual do movimento.;Texto;100;Obrigatório;^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$;;1;1;"";Não permitido;string;ABCD2126019929279212650822221989319253344; diff --git a/dictionary/banktFixedIncomesGetInvestmentsInvestmentId_v1.csv b/dictionary/banktFixedIncomesGetInvestmentsInvestmentId_v1.csv index e97fa66d3..443926149 100644 --- a/dictionary/banktFixedIncomesGetInvestmentsInvestmentId_v1.csv +++ b/dictionary/banktFixedIncomesGetInvestmentsInvestmentId_v1.csv @@ -55,6 +55,6 @@ OUTROS";1;1;"";Não permitido;string;CDI; /data/issueUnitPrice/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; /data/dueDate;dueDate;Data de vencimento do título.;Data;10;Obrigatório;^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$;;1;1;"";Não permitido;string;2018-02-15;10 /data/issueDate;issueDate;Data de emissão do título.;Data;10;Obrigatório;^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$;;1;1;"";Não permitido;string;2018-02-16;10 -/data/clearingCode;clearingCode;Código de registro do ativo na clearing.;Texto;30;Opcional;[\w\W-]*;;0;1;"";Não permitido;string;; +/data/clearingCode;clearingCode;Código de registro do ativo na clearing.;Texto;30;Opcional;[\w\W-]*;;0;1;"";Não permitido;string;CDB421GPXXX; /data/purchaseDate;purchaseDate;Data de aquisição do cliente.;Data;10;Obrigatório;^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$;;1;1;"";Não permitido;string;2018-02-15;10 /data/gracePeriodDate;gracePeriodDate;Data até a qual o cliente não poderá resgatar antecipadamente seu investimento.;Data;10;Obrigatório;^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$;;1;1;"";Não permitido;string;2018-02-16;10 diff --git a/dictionary/consentsGetConsentsConsentId_v2.csv b/dictionary/consentsGetConsentsConsentId_v2.csv index bd594b193..02f3ce100 100644 --- a/dictionary/consentsGetConsentsConsentId_v2.csv +++ b/dictionary/consentsGetConsentsConsentId_v2.csv @@ -15,7 +15,7 @@ Informações mais detalhadas sobre a construção de namespaces devem ser consu AWAITING_AUTHORISATION REJECTED";1;1;"";Não permitido;string;AWAITING_AUTHORISATION; /data/statusUpdateDateTime;statusUpdateDateTime;Data e hora em que o recurso foi atualizado. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).;Date Hora;20;Obrigatório;;;1;1;"";Não permitido;string;2021-05-21T08:30:00Z; -/data/permissions;permissions;Especifica os tipos de permissões de acesso às APIs no escopo do Open Finance Brasil - Fase 2, de acordo com os blocos de consentimento fornecidos pelo usuário e necessários ao acesso a cada endpoint das APIs.;Lista;;Obrigatório;;"ACCOUNTS_READ +/data/permissions;permissions;Especifica os tipos de permissões de acesso às APIs no escopo do Open Finance Brasil - Dados cadastrais e transacionais, de acordo com os blocos de consentimento fornecidos pelo usuário e necessários ao acesso a cada endpoint das APIs. Esse array não deve ter duplicidade de itens.;Lista;;Obrigatório;;"ACCOUNTS_READ ACCOUNTS_BALANCES_READ ACCOUNTS_TRANSACTIONS_READ ACCOUNTS_OVERDRAFT_LIMITS_READ @@ -49,7 +49,7 @@ BANK_FIXED_INCOMES_READ CREDIT_FIXED_INCOMES_READ FUNDS_READ VARIABLE_INCOMES_READ -TREASURE_TITLES_READ";1;30;"";Não permitido;array;; +TREASURE_TITLES_READ";1;N;"";Não permitido;array;; /data/expirationDateTime;expirationDateTime;Data e hora de expiração da permissão. De preenchimento obrigatório, reflete a data limite de validade do consentimento. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).;Date Hora;20;Obrigatório;;;1;1;"";Não permitido;string;2021-05-21T08:30:00Z; /data/rejection;rejection;Objeto a ser retornado caso o consentimento seja rejeitado.;Objeto;;Opcional;;;0;1;"";Não permitido;object;; /data/rejection/rejectedBy;rejectedBy;"Informar usuário responsável pela rejeição. diff --git a/dictionary/consentsPostConsents_v2.csv b/dictionary/consentsPostConsents_v2.csv index 211b9be65..d00df2787 100644 --- a/dictionary/consentsPostConsents_v2.csv +++ b/dictionary/consentsPostConsents_v2.csv @@ -15,7 +15,7 @@ Informações mais detalhadas sobre a construção de namespaces devem ser consu AWAITING_AUTHORISATION REJECTED";1;1;"";Não permitido;string;AWAITING_AUTHORISATION; /data/statusUpdateDateTime;statusUpdateDateTime;Data e hora em que o recurso foi atualizado. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).;Date Hora;20;Obrigatório;;;1;1;"";Não permitido;string;2021-05-21T08:30:00Z; -/data/permissions;permissions;Especifica os tipos de permissões de acesso às APIs no escopo do Open Finance Brasil - Fase 2, de acordo com os blocos de consentimento fornecidos pelo usuário e necessários ao acesso a cada endpoint das APIs.;Lista;;Obrigatório;;"ACCOUNTS_READ +/data/permissions;permissions;Especifica os tipos de permissões de acesso às APIs no escopo do Open Finance Brasil - Dados cadastrais e transacionais, de acordo com os blocos de consentimento fornecidos pelo usuário e necessários ao acesso a cada endpoint das APIs. Esse array não deve ter duplicidade de itens.;Lista;;Obrigatório;;"ACCOUNTS_READ ACCOUNTS_BALANCES_READ ACCOUNTS_TRANSACTIONS_READ ACCOUNTS_OVERDRAFT_LIMITS_READ @@ -49,5 +49,5 @@ BANK_FIXED_INCOMES_READ CREDIT_FIXED_INCOMES_READ FUNDS_READ VARIABLE_INCOMES_READ -TREASURE_TITLES_READ";1;30;"";Não permitido;array;; +TREASURE_TITLES_READ";1;N;"";Não permitido;array;; /data/expirationDateTime;expirationDateTime;Data e hora de expiração da permissão. De preenchimento obrigatório, reflete a data limite de validade do consentimento. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).;Date Hora;20;Obrigatório;;;1;1;"";Não permitido;string;2021-05-21T08:30:00Z; diff --git a/dictionary/creditFixedIncomesGetInvestmentsInvestmentIdBalances_v1.csv b/dictionary/creditFixedIncomesGetInvestmentsInvestmentIdBalances_v1.csv index 2a84a8180..16242f101 100644 --- a/dictionary/creditFixedIncomesGetInvestmentsInvestmentIdBalances_v1.csv +++ b/dictionary/creditFixedIncomesGetInvestmentsInvestmentIdBalances_v1.csv @@ -2,7 +2,7 @@ /data;data;;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/referenceDateTime;referenceDateTime;"data e hora da última posição consolidada disponível a que se referem os dados transacionais do cliente disponíveis nos canais eletrônicos; Na representação data deve se considerar os minutos e segundos como zero (00:00:00Z)";Date Hora;20;Obrigatório;(^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$);;1;1;"";Não permitido;string;2022-07-21T17:32:00Z; /data/updatedUnitPrice;updatedUnitPrice;"valor bruto unitário atualizado na data de referência;";Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; -/data/updatedUnitPrice/amount;amount;Valor relacionado ao objeto.;Texto;24;Obrigatório;^\d{1,15}\.\d{2,8}$;;1;1;"";Não permitido;string;-1000.0400;4 +/data/updatedUnitPrice/amount;amount;Valor relacionado ao objeto.;Texto;24;Obrigatório;^\d{1,15}\.\d{2,8}$;;1;1;"";Não permitido;string;1000.0400;4 /data/updatedUnitPrice/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; /data/quantity;quantity;quantidade de títulos detidos na data da posição do cliente;Texto;24;Obrigatório;^\d{1,15}\.\d{2,8}$;;1;1;"";Não permitido;string;15.00;4 /data/grossAmount;grossAmount;valor do investimento que se refere a quantidade x PU atualizado na data de referência;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; @@ -11,35 +11,35 @@ /data/netAmount;netAmount;valor do investimento atualizado na data de referência, posterior a dedução de impostos (IOF e IR);Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/netAmount/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04;4 /data/netAmount/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/incomeTax;incomeTax;"Valor do imposto considerando a alíquota vigente na data de referência. -[Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'tipo da movimentação' for preenchido com o valor 'SAIDA'. -";Objeto;;Obrigatório;;;1;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'tipo da movimentação' for preenchido com o valor 'SAIDA'. -";Não permitido;object;; +/data/incomeTax;incomeTax;"Valor do imposto de renda provisionado considerando a alíquota vigente na data de referência. +";Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/incomeTax/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04;4 /data/incomeTax/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/financialTransactionTax;financialTransactionTax;"Valor do imposto considerando a alíquota vigente na data de referência. -[Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'tipo da movimentação' for preenchido com o valor 'SAIDA'. -";Objeto;;Obrigatório;;;1;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'tipo da movimentação' for preenchido com o valor 'SAIDA'. -";Não permitido;object;; +/data/financialTransactionTax;financialTransactionTax;"Valor do imposto (IOF) provisionado considerando a alíquota vigente na data de referência. +";Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/financialTransactionTax/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04;4 /data/financialTransactionTax/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/blockedBalance;blockedBalance;valor líquido não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros);Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/blockedBalance;blockedBalance;Valor não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros). Prazo de carência não é considerado como bloqueio.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/blockedBalance/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04;4 /data/blockedBalance/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; /data/purchaseUnitPrice;purchaseUnitPrice;valor unitário negociado com o cliente na data de aquisição;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/purchaseUnitPrice/amount;amount;Valor relacionado ao objeto.;Texto;24;Obrigatório;^\d{1,15}\.\d{2,8}$;;1;1;"";Não permitido;string;1000.000004;4 /data/purchaseUnitPrice/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/preFixedRate;preFixedRate;"Taxa de remuneração acordada com o cliente na contratação. Em casos de produtos progressivos, considerar taxa vigente. -[Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'PRE_FIXADO' no campo 'indexer' ou quando se tratar de produto com remuneração híbrida. -";Texto;8;Condicional;^\d{1}\.\d{6}$;;0;1;" Campo de preenchimento obrigatório pelas participantes quando houver 'PRE_FIXADO' no campo 'indexer' ou quando se tratar de produto com remuneração híbrida. -";Não permitido;string;0.300000; -/data/postFixedIndexerPercentage;postFixedIndexerPercentage;"Percentual do indexador acordado com o cliente na contratação. Em casos de produtos progressivos, considerar taxa vigente. -[Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido de forma diferente de 'PRE_FIXADO' ou quando se tratar de produto com remuneração híbrida. -";Texto;8;Condicional;^\d{1}\.\d{6}$;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido de forma diferente de 'PRE_FIXADO' ou quando se tratar de produto com remuneração híbrida. -";Não permitido;string;1.100000; -/data/fine;fine;valor de multa devido ao atraso do pagamento acordado em contrato;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/preFixedRate;preFixedRate;"Taxa de remuneração acordada com o cliente na contratação. +Em casos de produtos progressivos, considerar taxa vigente. +É esperado que o preenchimento deste campo pelas participantes seja enviado de acordo com o campo preFixedRate do endpoint /investment/{investmentId}. +";Texto;8;Opcional;^\d{1}\.\d{6}$;;0;1;"";Não permitido;string;0.300000;8 +/data/postFixedIndexerPercentage;postFixedIndexerPercentage;"Percentual do indexador acordado com o cliente na contratação. +Em casos de produtos progressivos, considerar taxa vigente. +É esperado que o preenchimento deste campo pelas participantes seja enviado de acordo com o campo postFixedIndexerPercentagedo endpoint /investment/{investmentId}. +";Texto;8;Opcional;^\d{1}\.\d{6}$;;0;1;"";Não permitido;string;1.100000;8 +/data/fine;fine;"Valor de multa devido ao atraso do pagamento acordado em contrato. +Caso a transmissora possua a informação, o envio deste campo é obrigatório. +";Objeto;;Opcional;;;0;1;"";Não permitido;object;; /data/fine/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04;4 /data/fine/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/latePayment;latePayment;valor de mora devido ao atraso do pagamento acordado em contrato;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/latePayment;latePayment;"Valor de mora devido ao atraso do pagamento acordado em contrato. +Caso a transmissora possua a informação, o envio deste campo é obrigatório. +";Objeto;;Opcional;;;0;1;"";Não permitido;object;; /data/latePayment/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04;4 /data/latePayment/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; diff --git a/dictionary/creditFixedIncomesGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv b/dictionary/creditFixedIncomesGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv index e65da85cc..ece95901e 100644 --- a/dictionary/creditFixedIncomesGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv +++ b/dictionary/creditFixedIncomesGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv @@ -1,8 +1,15 @@ Xpath;Nome;Definição;Tipo de Dado;Tamanho;Mandatoriedade;Formato;Domínio;Mínimo de Ocorrências;Máximo de Ocorrências;Restrições;Nulidade;Tipo de Dado Json;Exemplo;Tamanho mínimo /data;data;;Lista;;Obrigatório;;;0;N;"";Não permitido;array;; -/data/type;type;"Tipo de movimentação na visão de investimento (Nos casos de motivo da movimentação ""pagamento de juros"", ""amortização"", ""prêmio"", ""multa"" e ""mora"", fica convencionado que será considerado que o tipo de movimento será saída).";Texto;;Obrigatório;;"ENTRADA +/data/type;type;"Tipo de movimentação na visão de investimento​: + +ENTRADA: COMPRA, CANCELAMENTO, TRANSFERENCIA_TITULARIDADE, TRANSFERENCIA_CUSTODIA, OUTROS​. + +SAIDA: VENDA, CANCELAMENTO, VENCIMENTO, PAGAMENTO_JUROS, AMORTIZACAO, PREMIO, TRANSFERENCIA_TITULARIDADE, TRANSFERENCIA_CUSTODIA, MULTA, MORA, OUTROS. ​ + +Por exemplo, para movimentação de CANCELAMENTO, tipicamente, será o type contrário ao evento originário. Ou seja, para cancelamento de COMPRA, considera-se type SAIDA; para cancelamento de VENDA, considera-se type ENTRADA. +";Texto;;Obrigatório;;"ENTRADA SAIDA";1;1;"";Não permitido;string;ENTRADA; -/data/transactionType;transactionType;Compra, venda, cancelamento, vencimento, pagamento de juros, amortização, prêmio, transferência de titularidade, transferência de custódia, multa, mora e outros;Texto;;Obrigatório;;"COMPRA +/data/transactionType;transactionType;Compra, venda, cancelamento, vencimento, pagamento de juros, amortização, prêmio, transferência de titularidade, transferência de custódia, multa, mora e outros. Para movimentos de transferência (titularidade ou custódia) deve ser considerado o preço unitário (transactionUnitPrice) da aquisição do título.;Texto;;Obrigatório;;"COMPRA VENDA CANCELAMENTO VENCIMENTO @@ -14,16 +21,24 @@ TRANSFERENCIA_CUSTODIA MULTA MORA OUTROS";1;1;"";Não permitido;string;COMPRA; -/data/typeAdditionalInfo;typeAdditionalInfo;"Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. +/data/transactionTypeAdditionalInfo;transactionTypeAdditionalInfo;"Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'OUTROS' no campo 'transactionType'. ";Texto;100;Condicional;[\w\W\s]*;;0;1;" Campo de preenchimento obrigatório pelas participantes quando houver 'OUTROS' no campo 'transactionType'. ";Não permitido;string;; /data/transactionDate;transactionDate;Data da movimentação;Data;10;Obrigatório;^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$;;1;1;"";Não permitido;string;2018-02-15; -/data/transactionUnitPrice;transactionUnitPrice;valor unitário negociado com o cliente na data de aquisição;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/transactionUnitPrice;transactionUnitPrice;"valor unitário negociado com o cliente na data de aquisição + +[Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA' ou 'VENCIMENTO'. +";Objeto;;Condicional;;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA' ou 'VENCIMENTO'. +";Não permitido;object;; /data/transactionUnitPrice/amount;amount;Valor relacionado ao objeto.;Texto;24;Obrigatório;^\d{1,15}\.\d{2,8}$;;1;1;"";Não permitido;string;1000.000004;4 /data/transactionUnitPrice/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/transactionQuantity;transactionQuantity;Quantidade de títulos envolvidos na movimentação;Texto;24;Obrigatório;^\d{1,15}\.\d{2,8}$;;1;1;"";Não permitido;string;42.25; -/data/transactionGrossValue;transactionGrossValue;Valor bruto da transação (Preço unitário da movimentação x Quantidade) ;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/transactionQuantity;transactionQuantity;"Quantidade de títulos envolvidos na movimentação + +[Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA', 'VENCIMENTO', 'TRANSFERENCIA_TITULARIDADE' ou 'TRANSFERENCIA_CUSTODIA'. +";Texto;24;Condicional;^\d{1,15}\.\d{2,8}$;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA', 'VENCIMENTO', 'TRANSFERENCIA_TITULARIDADE' ou 'TRANSFERENCIA_CUSTODIA'. +";Não permitido;string;42.25; +/data/transactionGrossValue;transactionGrossValue;Valor bruto da transação (Preço unitário da movimentação x Quantidade);Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/transactionGrossValue/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04;4 /data/transactionGrossValue/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; /data/incomeTax;incomeTax;"Valor do imposto de renda recolhido na transação. @@ -44,10 +59,10 @@ OUTROS";1;1;"";Não permitido;string;COMPRA; /data/remunerationTransactionRate;remunerationTransactionRate;"Taxa de remuneração acordada com o cliente na contratação. [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. ";Texto;8;Condicional;^\d{1}\.\d{6}$;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. -";Não permitido;string;0.300000; +";Não permitido;string;0.300000;8 /data/indexerPercentage;indexerPercentage;"Percentual máximo do indexador na transação acordado com o cliente na contratação. [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. ";Texto;8;Condicional;^\d{1}\.\d{6}$;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. -";Não permitido;string;1.100000; +";Não permitido;string;1.100000;8 /data/transactionId;transactionId;"Código ou identificador único prestado pela instituição para individualizar o movimento. ";Texto;100;Obrigatório;^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$;;1;1;"";Não permitido;string;ABCD2126019929279212650822221989319253344; diff --git a/dictionary/creditFixedIncomesGetInvestmentsInvestmentIdTransactions_v1.csv b/dictionary/creditFixedIncomesGetInvestmentsInvestmentIdTransactions_v1.csv index 9ca48c0c4..f2888de53 100644 --- a/dictionary/creditFixedIncomesGetInvestmentsInvestmentIdTransactions_v1.csv +++ b/dictionary/creditFixedIncomesGetInvestmentsInvestmentIdTransactions_v1.csv @@ -1,8 +1,15 @@ Xpath;Nome;Definição;Tipo de Dado;Tamanho;Mandatoriedade;Formato;Domínio;Mínimo de Ocorrências;Máximo de Ocorrências;Restrições;Nulidade;Tipo de Dado Json;Exemplo;Tamanho mínimo /data;data;;Lista;;Obrigatório;;;0;N;"";Não permitido;array;; -/data/type;type;"Tipo de movimentação na visão de investimento (Nos casos de motivo da movimentação ""pagamento de juros"", ""amortização"", ""prêmio"", ""multa"" e ""mora"", fica convencionado que será considerado que o tipo de movimento será saída).";Texto;;Obrigatório;;"ENTRADA +/data/type;type;"Tipo de movimentação na visão de investimento​: + +ENTRADA: COMPRA, CANCELAMENTO, TRANSFERENCIA_TITULARIDADE, TRANSFERENCIA_CUSTODIA, OUTROS​. + +SAIDA: VENDA, CANCELAMENTO, VENCIMENTO, PAGAMENTO_JUROS, AMORTIZACAO, PREMIO, TRANSFERENCIA_TITULARIDADE, TRANSFERENCIA_CUSTODIA, MULTA, MORA, OUTROS. ​ + +Por exemplo, para movimentação de CANCELAMENTO, tipicamente, será o type contrário ao evento originário. Ou seja, para cancelamento de COMPRA, considera-se type SAIDA; para cancelamento de VENDA, considera-se type ENTRADA. +";Texto;;Obrigatório;;"ENTRADA SAIDA";1;1;"";Não permitido;string;ENTRADA; -/data/transactionType;transactionType;Compra, venda, cancelamento, vencimento, pagamento de juros, amortização, prêmio, transferência de titularidade, transferência de custódia, multa, mora e outros;Texto;;Obrigatório;;"COMPRA +/data/transactionType;transactionType;Compra, venda, cancelamento, vencimento, pagamento de juros, amortização, prêmio, transferência de titularidade, transferência de custódia, multa, mora e outros. Para movimentos de transferência (titularidade ou custódia) deve ser considerado o preço unitário (transactionUnitPrice) da aquisição do título.;Texto;;Obrigatório;;"COMPRA VENDA CANCELAMENTO VENCIMENTO @@ -14,16 +21,24 @@ TRANSFERENCIA_CUSTODIA MULTA MORA OUTROS";1;1;"";Não permitido;string;COMPRA; -/data/typeAdditionalInfo;typeAdditionalInfo;"Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio +/data/transactionTypeAdditionalInfo;transactionTypeAdditionalInfo;"Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'OUTROS' no campo 'transactionType'. ";Texto;100;Condicional;[\w\W\s]*;;0;1;" Campo de preenchimento obrigatório pelas participantes quando houver 'OUTROS' no campo 'transactionType'. ";Não permitido;string;; /data/transactionDate;transactionDate;Data da movimentação;Data;10;Obrigatório;^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$;;1;1;"";Não permitido;string;2018-02-15; -/data/transactionUnitPrice;transactionUnitPrice;valor unitário negociado com o cliente na data de aquisição;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/transactionUnitPrice;transactionUnitPrice;"valor unitário negociado com o cliente na data de aquisição + +[Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA' ou 'VENCIMENTO'. +";Objeto;;Condicional;;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA' ou 'VENCIMENTO'. +";Não permitido;object;; /data/transactionUnitPrice/amount;amount;Valor relacionado ao objeto.;Texto;24;Obrigatório;^\d{1,15}\.\d{2,8}$;;1;1;"";Não permitido;string;1000.000004;4 /data/transactionUnitPrice/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/transactionQuantity;transactionQuantity;Quantidade de títulos envolvidos na movimentação;Texto;25;Obrigatório;^\d{1,15}\.\d{2,8}$;;1;1;"";Não permitido;string;42.25; -/data/transactionGrossValue;transactionGrossValue;Valor bruto da transação (Preço unitário da movimentação x Quantidade) ;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/transactionQuantity;transactionQuantity;"Quantidade de títulos envolvidos na movimentação + +[Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA', 'VENCIMENTO', 'TRANSFERENCIA_TITULARIDADE' ou 'TRANSFERENCIA_CUSTODIA'. +";Texto;24;Condicional;^\d{1,15}\.\d{2,8}$;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA', 'VENCIMENTO', 'TRANSFERENCIA_TITULARIDADE' ou 'TRANSFERENCIA_CUSTODIA'. +";Não permitido;string;42.25; +/data/transactionGrossValue;transactionGrossValue;Valor bruto da transação (Preço unitário da movimentação x Quantidade);Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/transactionGrossValue/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04;4 /data/transactionGrossValue/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; /data/incomeTax;incomeTax;"Valor do imposto de renda recolhido na transação. @@ -44,10 +59,10 @@ OUTROS";1;1;"";Não permitido;string;COMPRA; /data/remunerationTransactionRate;remunerationTransactionRate;"Taxa de remuneração acordada com o cliente na contratação. [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. ";Texto;8;Condicional;^\d{1}\.\d{6}$;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. -";Não permitido;string;0.300000; +";Não permitido;string;0.300000;8 /data/indexerPercentage;indexerPercentage;"Percentual máximo do indexador na transação acordado com o cliente na contratação. [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. ";Texto;8;Condicional;^\d{1}\.\d{6}$;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. -";Não permitido;string;1.100000; +";Não permitido;string;1.100000;8 /data/transactionId;transactionId;"Código ou identificador único prestado pela instituição para individualizar o movimento. ";Texto;100;Obrigatório;^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$;;1;1;"";Não permitido;string;ABCD2126019929279212650822221989319253344; diff --git a/dictionary/creditFixedIncomesGetInvestmentsInvestmentId_v1.csv b/dictionary/creditFixedIncomesGetInvestmentsInvestmentId_v1.csv index 9b3743372..9a52e3fc2 100644 --- a/dictionary/creditFixedIncomesGetInvestmentsInvestmentId_v1.csv +++ b/dictionary/creditFixedIncomesGetInvestmentsInvestmentId_v1.csv @@ -1,19 +1,21 @@ Xpath;Nome;Definição;Tipo de Dado;Tamanho;Mandatoriedade;Formato;Domínio;Mínimo de Ocorrências;Máximo de Ocorrências;Restrições;Nulidade;Tipo de Dado Json;Exemplo;Tamanho mínimo /data;data;;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; -/data/issuerInstitutionCnpjNumber;issuerInstitutionCnpjNumber;CNPJ da instituição emissora;Texto;14;Obrigatório;^\d{14}$;;1;1;"";Não permitido;string;11225860000140; -/data/isinCode;isinCode;"Código ISIN da emissão, Código ISIN do produto, Código da emissora (campo opcional): código universal que identifica cada valor mobiliário ou instrumento financeiro, conforme Norma ISO 6166. -";Texto;12;Opcional;^[A-Z]{2}([A-Z0-9]){9}\d{1}$;;0;1;"";Não permitido;string;BRCST4CTF001; +/data/issuerInstitutionCnpjNumber;issuerInstitutionCnpjNumber;"CNPJ da instituição emissora. + +Caso a instituição tenha a informação, o envio será obrigatório. +";Texto;14;Opcional;^\d{14}$;;0;1;"";Não permitido;string;11225860000140; +/data/isinCode;isinCode;"Código ISIN é um código universal que identifica cada valor mobiliário ou instrumento financeiro, conforme Norma ISO 6166. Caso a transmissora possua a informação o envio deste campo é obrigatório. + +[Restrição] Deve ser preenchido nos casos em que o 'clearingCode' não seja preenchido. +";Texto;12;Condicional;^[A-Z]{2}([A-Z0-9]){9}\d{1}$;;0;1;" Deve ser preenchido nos casos em que o 'clearingCode' não seja preenchido. +";Não permitido;string;BRCST4CTF001; /data/investmentType;investmentType;Especificação do ativo em questão (Debêntures, CRI ou CRA).;Texto;;Obrigatório;;"DEBENTURES CRI CRA";1;1;"";Não permitido;string;CRI; -/data/debtorCnpjNumber;debtorCnpjNumber;"CNPJ do devedor (condicional para CRI e CRA) -[Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'investmentType' for igual a ""CRI"" ou ""CRA"". -";Texto;14;Condicional;^\d{14}$;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'investmentType' for igual a ""CRI"" ou ""CRA"". -";Não permitido;string;11225860000140; -/data/debtorName;debtorName;"Nome do devedor (condicional para CRI e CRA) -[Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'investmentType' for igual a ""CRI"" ou ""CRA"". -";Texto;70;Condicional;[\w\W\s]*;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'investmentType' for igual a ""CRI"" ou ""CRA"". -";Não permitido;string;Roberto Marino; +/data/debtorCnpjNumber;debtorCnpjNumber;"CNPJ do devedor. Caso a transmissora possua a informação para os produtos CRI e CRA, o envio deste campo é obrigatório. +";Texto;14;Opcional;^\d{14}$;;0;1;"";Não permitido;string;11225860000140; +/data/debtorName;debtorName;"Nome do devedor. Caso a transmissora possua a informação para os produtos CRI e CRA, o envio deste campo é obrigatório. +";Texto;70;Opcional;[\w\W\s]*;;0;1;"";Não permitido;string;Roberto Marino; /data/taxExemptProduct;taxExemptProduct;Indicador de um produto incentivado;Texto;;Obrigatório;;"SIM NAO";1;1;"";Não permitido;string;SIM; /data/remuneration;remuneration;;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; @@ -28,17 +30,24 @@ NAO";1;1;"";Não permitido;string;SIM; /data/remuneration/rateType;rateType;"Tipo da taxa de remuneração 1. LINEAR 2. EXPONENCIAL -";Texto;;Obrigatório;;"LINEAR -EXPONENCIAL";1;1;"";Não permitido;string;LINEAR; -/data/remuneration/ratePeriodicity;ratePeriodicity;Periodicidade da taxa de remuneração (mensal, anual, diário, semestral);Texto;;Obrigatório;;"MENSAL + +Caso a instituição tenha a informação, o envio será obrigatório. +";Texto;;Opcional;;"LINEAR +EXPONENCIAL";0;1;"";Não permitido;string;LINEAR; +/data/remuneration/ratePeriodicity;ratePeriodicity;"Periodicidade da taxa de remuneração (mensal, anual, diário, semestral). + +Caso a instituição tenha a informação, o envio será obrigatório. +";Texto;;Opcional;;"MENSAL ANUAL DIARIO -SEMESTRAL";1;1;"";Não permitido;string;MENSAL; +SEMESTRAL";0;1;"";Não permitido;string;MENSAL; /data/remuneration/calculation;calculation;"Base de cálculo (dias úteis ou dias corridos). 1. dias úteis - 2. dias corridos -";Texto;;Obrigatório;;"DIAS_UTEIS -DIAS_CORRIDOS";1;1;"";Não permitido;string;DIAS_CORRIDOS; + 2. dias corridos. + +Caso a instituição tenha a informação, o envio será obrigatório. +";Texto;;Opcional;;"DIAS_UTEIS +DIAS_CORRIDOS";0;1;"";Não permitido;string;DIAS_CORRIDOS; /data/remuneration/indexer;indexer;"Índice utilizado como referência para a correção da rentabilidade e/ou rendimentos do ativo 1. CDI 2. DI @@ -103,6 +112,13 @@ OUTROS";0;1;" Campo de preenchimento obrigatório pelos participantes quando hou [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'Outros' no campo 'voucherPaymentPeriodicity'. ";Texto;50;Condicional;[\w\W\s]*;;0;1;" Campo de preenchimento obrigatório pelas participantes quando houver 'Outros' no campo 'voucherPaymentPeriodicity'. ";Não permitido;string;Diária; -/data/clearingCode;clearingCode;Código de registro do ativo na clearing;Texto;30;Opcional;[\w\W-]*;;0;1;"";Não permitido;string;CDB421GPXXX; +/data/clearingCode;clearingCode;"Código de registro do ativo na Clearing. Caso a transmissora possua a informação o envio deste campo é obrigatório. + +[Restrição] Deve ser preenchido nos casos em que o 'isinCode' não seja preenchido. +";Texto;30;Condicional;[\w\W-]*;;0;1;" Deve ser preenchido nos casos em que o 'isinCode' não seja preenchido. +";Não permitido;string;CDB421GPXXX; /data/purchaseDate;purchaseDate;Data de aquisição do cliente;Data;10;Obrigatório;^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$;;1;1;"";Não permitido;string;2018-02-15; -/data/gracePeriodDate;gracePeriodDate;Data até a qual o cliente não poderá resgatar antecipadamente seu investimento;Data;10;Obrigatório;^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$;;1;1;"";Não permitido;string;2018-02-16; +/data/gracePeriodDate;gracePeriodDate;"Data até a qual o cliente não poderá resgatar antecipadamente seu investimento. + +Caso a instituição tenha a informação, o envio será obrigatório. +";Data;10;Opcional;^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$;;0;1;"";Não permitido;string;2018-02-16; diff --git a/dictionary/example/examples_creditFixedIncomesGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv b/dictionary/example/examples_creditFixedIncomesGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv index 9873069b4..8a475089e 100644 --- a/dictionary/example/examples_creditFixedIncomesGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv +++ b/dictionary/example/examples_creditFixedIncomesGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv @@ -1,4 +1,4 @@ -data,,,,,,,,,,,,,,,,,,links,,,,meta +data,,,,,,,,,,,,,,,,,,links,,,,meta type,transactionType,typeAdditionalInfo,transactionDate,transactionUnitPrice,,transactionQuantity,transactionGrossValue,,incomeTax,,financialTransactionTax,,transactionNetValue,,remunerationTransactionRate,indexerPercentage,transactionId,self,first,prev,next,requestDateTime ,,,,amount,currency,,amount,currency,amount,currency,amount,currency,amount,currency,,,,,,,, ENTRADA,COMPRA,string,2018-02-15,1000.000004,BRL,42.25,1000.04,BRL,1000.04,BRL,1000.04,BRL,1000.04,BRL,0.300000,1.100000,ABCD2126019929279212650822221989319253344,https://api.banco.com.br/open-banking/api/v1/resource,https://api.banco.com.br/open-banking/api/v1/resource,https://api.banco.com.br/open-banking/api/v1/resource,https://api.banco.com.br/open-banking/api/v1/resource,2021-05-21T08:30:00Z \ No newline at end of file diff --git a/dictionary/example/examples_creditFixedIncomesGetInvestmentsInvestmentIdTransactions_v1.csv b/dictionary/example/examples_creditFixedIncomesGetInvestmentsInvestmentIdTransactions_v1.csv index 39c5e0a48..a9f249090 100644 --- a/dictionary/example/examples_creditFixedIncomesGetInvestmentsInvestmentIdTransactions_v1.csv +++ b/dictionary/example/examples_creditFixedIncomesGetInvestmentsInvestmentIdTransactions_v1.csv @@ -1,4 +1,4 @@ -data,,,,,,,,,,,,,,,,,,links,,,,meta +data,,,,,,,,,,,,,,,,,,links,,,,meta type,transactionType,typeAdditionalInfo,transactionDate,transactionUnitPrice,,transactionQuantity,transactionGrossValue,,incomeTax,,financialTransactionTax,,transactionNetValue,,remunerationTransactionRate,indexerPercentage,transactionId,self,first,prev,next,requestDateTime ,,,,amount,currency,,amount,currency,amount,currency,amount,currency,amount,currency,,,,,,,, ENTRADA,COMPRA,string,2018-02-15,1000.000004,BRL,42.25,1000.04,BRL,1000.04,BRL,1000.04,BRL,1000.04,BRL,0.300000,1.100000,ABCD2126019929279212650822221989319253344,https://api.banco.com.br/open-banking/api/v1/resource,https://api.banco.com.br/open-banking/api/v1/resource,https://api.banco.com.br/open-banking/api/v1/resource,https://api.banco.com.br/open-banking/api/v1/resource,2021-05-21T08:30:00Z \ No newline at end of file diff --git a/dictionary/fundsGetInvestmentsInvestmentIdBalances_v1.csv b/dictionary/fundsGetInvestmentsInvestmentIdBalances_v1.csv index 194e33b5f..929f3f532 100644 --- a/dictionary/fundsGetInvestmentsInvestmentIdBalances_v1.csv +++ b/dictionary/fundsGetInvestmentsInvestmentIdBalances_v1.csv @@ -4,16 +4,16 @@ /data/grossAmount;grossAmount;Valor do investimento que se refere a quantidade da cota x valor da cota, atualizado na data de referência.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/grossAmount/amount;amount;Valor relacionado ao objeto.;Texto;21;Obrigatório;^-?\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04; /data/grossAmount/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/netAmount;netAmount;Valor do investimento atualizado na data de referência, posterior a dedução de impostos (IOF e IR) e taxa de saída, caso a instituição considere este valor na composição do saldo líquido.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/netAmount;netAmount;Valor do investimento atualizado na data de referência, posterior a dedução de impostos (IOF e IR) e taxa de saída, caso a instituição considere este valor na composição do saldo líquido. Este valor considera o valor bloqueado (blockedAmount).;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/netAmount/amount;amount;Valor relacionado ao objeto.;Texto;21;Obrigatório;^-?\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04; /data/netAmount/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/incomeTaxProvision;incomeTaxProvision;Valor do imposto considerando a alíquota vigente na data de referência.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/incomeTaxProvision;incomeTaxProvision;Valor do imposto de renda provisionado considerando a alíquota vigente na data de referência.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/incomeTaxProvision/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;50.02; /data/incomeTaxProvision/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; /data/financialTransactionTaxProvision;financialTransactionTaxProvision;Valor do imposto considerando a alíquota vigente na data de referência.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/financialTransactionTaxProvision/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;50.02; /data/financialTransactionTaxProvision/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/blockedAmount;blockedAmount;"Valor líquido não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros);";Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/blockedAmount;blockedAmount;Valor não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros).;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/blockedAmount/amount;amount;Valor relacionado ao objeto.;Texto;21;Obrigatório;^-?\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04; /data/blockedAmount/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; /data/quotaQuantity;quotaQuantity;Quantidade de cotas detidas em posição do cliente .;Texto;24;Obrigatório;^\d{1,15}\.\d{2,8}$;;1;1;"";Não permitido;string;42.25; diff --git a/dictionary/fundsGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv b/dictionary/fundsGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv index 00ebc0e60..b4c5166e8 100644 --- a/dictionary/fundsGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv +++ b/dictionary/fundsGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv @@ -3,9 +3,9 @@ /data/transactionId;transactionId;Código ou identificador único prestado pela instituição que mantém a representação individual do movimento na posição do fundo.;Texto;100;Obrigatório;^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$;;1;1;"";Não permitido;string;ABCD2126019929279212650822221989319253344; /data/type;type;"Tipo de movimentação (Entrada ou Saída). -ENTRADA: APLICACAO, TRANSFERENCIA_COTAS, AMORTIZACAO, OUTROS. +ENTRADA: APLICACAO, TRANSFERENCIA_COTAS, OUTROS. -SAIDA: RESGATE, COME_COTAS, TRANSFERENCIA_COTAS, OUTROS. +SAIDA: RESGATE, COME_COTAS, TRANSFERENCIA_COTAS, AMORTIZACAO, OUTROS. ";Texto;;Obrigatório;;"ENTRADA SAIDA";1;1;"";Não permitido;string;ENTRADA; /data/transactionType;transactionType;"O campo deve classificar a transação de movimentação de investimento em um dos tipos descritos (amortização, transferência de cotas, aplicação, resgate ou come-cotas). @@ -28,10 +28,11 @@ OUTROS";1;1;"";Não permitido;string;AMORTIZACAO; /data/transactionQuotaPrice/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; /data/transactionQuotaQuantity;transactionQuotaQuantity;"Número de cotas convertidas na data da movimentação. ";Texto;24;Obrigatório;^\d{1,15}\.\d{2,8}$;;1;1;"";Não permitido;string;42.25; -/data/transactionValue;transactionValue;Valor da movimentação.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/transactionValue;transactionValue;Valor solicitado pelo cliente.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/transactionValue/amount;amount;Valor relacionado ao objeto.;Texto;21;Obrigatório;^-?\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04; /data/transactionValue/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/transactionGrossValue;transactionGrossValue;"Valor da movimentação que se refere a quantidade da cota x valor da cota da movimentação. +/data/transactionGrossValue;transactionGrossValue;"Valor da movimentação que se refere a quantidade da cota x valor da cota da movimentação. +Nos casos em que não houver movimentação de cotas, por exemplo: amortização, não considerar a regra descrita. ";Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/transactionGrossValue/amount;amount;Valor relacionado ao objeto.;Texto;21;Obrigatório;^-?\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04; /data/transactionGrossValue/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; @@ -56,6 +57,9 @@ OUTROS";1;1;"";Não permitido;string;AMORTIZACAO; ";Não permitido;object;; /data/transactionExitFee/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04; /data/transactionExitFee/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/transactionNetValue;transactionNetValue;Valor líquido da movimentação posterior à dedução de impostos (IOF e IR) e taxa de saída.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/transactionNetValue;transactionNetValue;"Valor líquido da movimentação posterior à dedução de impostos (IOF e IR) e taxa de saída. +[Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. +";Objeto;;Condicional;;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. +";Não permitido;object;; /data/transactionNetValue/amount;amount;Valor relacionado ao objeto.;Texto;21;Obrigatório;^-?\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04; /data/transactionNetValue/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; diff --git a/dictionary/fundsGetInvestmentsInvestmentIdTransactions_v1.csv b/dictionary/fundsGetInvestmentsInvestmentIdTransactions_v1.csv index 00ebc0e60..b4c5166e8 100644 --- a/dictionary/fundsGetInvestmentsInvestmentIdTransactions_v1.csv +++ b/dictionary/fundsGetInvestmentsInvestmentIdTransactions_v1.csv @@ -3,9 +3,9 @@ /data/transactionId;transactionId;Código ou identificador único prestado pela instituição que mantém a representação individual do movimento na posição do fundo.;Texto;100;Obrigatório;^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$;;1;1;"";Não permitido;string;ABCD2126019929279212650822221989319253344; /data/type;type;"Tipo de movimentação (Entrada ou Saída). -ENTRADA: APLICACAO, TRANSFERENCIA_COTAS, AMORTIZACAO, OUTROS. +ENTRADA: APLICACAO, TRANSFERENCIA_COTAS, OUTROS. -SAIDA: RESGATE, COME_COTAS, TRANSFERENCIA_COTAS, OUTROS. +SAIDA: RESGATE, COME_COTAS, TRANSFERENCIA_COTAS, AMORTIZACAO, OUTROS. ";Texto;;Obrigatório;;"ENTRADA SAIDA";1;1;"";Não permitido;string;ENTRADA; /data/transactionType;transactionType;"O campo deve classificar a transação de movimentação de investimento em um dos tipos descritos (amortização, transferência de cotas, aplicação, resgate ou come-cotas). @@ -28,10 +28,11 @@ OUTROS";1;1;"";Não permitido;string;AMORTIZACAO; /data/transactionQuotaPrice/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; /data/transactionQuotaQuantity;transactionQuotaQuantity;"Número de cotas convertidas na data da movimentação. ";Texto;24;Obrigatório;^\d{1,15}\.\d{2,8}$;;1;1;"";Não permitido;string;42.25; -/data/transactionValue;transactionValue;Valor da movimentação.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/transactionValue;transactionValue;Valor solicitado pelo cliente.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/transactionValue/amount;amount;Valor relacionado ao objeto.;Texto;21;Obrigatório;^-?\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04; /data/transactionValue/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/transactionGrossValue;transactionGrossValue;"Valor da movimentação que se refere a quantidade da cota x valor da cota da movimentação. +/data/transactionGrossValue;transactionGrossValue;"Valor da movimentação que se refere a quantidade da cota x valor da cota da movimentação. +Nos casos em que não houver movimentação de cotas, por exemplo: amortização, não considerar a regra descrita. ";Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/transactionGrossValue/amount;amount;Valor relacionado ao objeto.;Texto;21;Obrigatório;^-?\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04; /data/transactionGrossValue/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; @@ -56,6 +57,9 @@ OUTROS";1;1;"";Não permitido;string;AMORTIZACAO; ";Não permitido;object;; /data/transactionExitFee/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04; /data/transactionExitFee/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/transactionNetValue;transactionNetValue;Valor líquido da movimentação posterior à dedução de impostos (IOF e IR) e taxa de saída.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/transactionNetValue;transactionNetValue;"Valor líquido da movimentação posterior à dedução de impostos (IOF e IR) e taxa de saída. +[Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. +";Objeto;;Condicional;;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. +";Não permitido;object;; /data/transactionNetValue/amount;amount;Valor relacionado ao objeto.;Texto;21;Obrigatório;^-?\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04; /data/transactionNetValue/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; diff --git a/dictionary/fundsGetInvestments_v1.csv b/dictionary/fundsGetInvestments_v1.csv index ac365a6f3..3452f09b5 100644 --- a/dictionary/fundsGetInvestments_v1.csv +++ b/dictionary/fundsGetInvestments_v1.csv @@ -19,4 +19,4 @@ MULTIMERCADO CAMBIAL";0;1;"";Não permitido;string;RENDA_FIXA; /data/anbimaClass;anbimaClass;Campo necessário para aderência a Resolução CVM175. Aguardando definições de mercado. Deve se tratar de campo do tipo enum.;Texto;70;Opcional;[\w\W\s]*;;0;1;"";Não permitido;string;; /data/anbimaSubclass;anbimaSubclass;Campo necessário para aderência a Resolução CVM175. Aguardando definições de mercado. Deve se tratar de campo do tipo enum.;Texto;70;Opcional;[\w\W\s]*;;0;1;"";Não permitido;string;; -/data/investmentId;investmentId;Identifica de forma única o relacionamento do cliente com o fundo, mantendo as regras de imutabilidade dentro da instituição transmissora.;Texto;100;Obrigatório;^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$;;1;1;"";Não permitido;string;92792126019929200000000000000000000000000; +/data/investmentId;investmentId;Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora. Nos casos em que o cliente, após completar 12 meses da última movimentação e com quantidade de ativos zerada (cliente não tem mais posse do produto sob custódia da transmissora), compre novamente o ativo que já investiu em períodos passados, manter o mesmo investmentId anteriormente utilizado.;Texto;100;Obrigatório;^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$;;1;1;"";Não permitido;string;92792126019929200000000000000000000000000; diff --git a/dictionary/resourcesGetResources_v2.csv b/dictionary/resourcesGetResources_v2.csv index 21ea3bb72..5cbb1d944 100644 --- a/dictionary/resourcesGetResources_v2.csv +++ b/dictionary/resourcesGetResources_v2.csv @@ -4,6 +4,7 @@ Contas de depósito à vista, de poupança ou de pagamento pré-paga : corresponde ao accountId; Conta de pagamento pós-paga: corresponde ao creditCardAccountId; Empréstimos, Financiamentos, Direitos creditórios descontados e Adiantamento a depositantes: corresponde ao contractId. +Renda Fixa Crédito, Renda Fixa Bancária, Renda Variável, Títulos do Tesouro Direto e Fundos de Investimentos: corresponde ao investmentId ";Texto;100;Obrigatório;^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$;;1;1;"";Não permitido;string;25cac914-d8ae-6789-b215-650a6215820d;1 /data/type;type;"Tipo de recurso (vide Enum): - Account - Conta de depósito à vista, poupança ou pagamento pré-paga diff --git a/dictionary/treasureTitlesGetInvestmentsInvestmentIdBalances_v1.csv b/dictionary/treasureTitlesGetInvestmentsInvestmentIdBalances_v1.csv index f2e35b4cf..251f8bd8d 100644 --- a/dictionary/treasureTitlesGetInvestmentsInvestmentIdBalances_v1.csv +++ b/dictionary/treasureTitlesGetInvestmentsInvestmentIdBalances_v1.csv @@ -12,7 +12,7 @@ tarifas (se houver), atualizado (a mercado) na data de referência. /data/netAmount;netAmount;Valor do investimento posterior a dedução de impostos, taxas e tarifas (se houver), atualizado (a mercado) na data de referência.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/netAmount/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04; /data/netAmount/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/incomeTax;incomeTax;"Valor do imposto provisionado considerando a alíquota vigente na data de referência. +/data/incomeTax;incomeTax;"Valor do imposto de renda provisionado considerando a alíquota vigente na data de referência. ";Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/incomeTax/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04; /data/incomeTax/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; @@ -22,7 +22,7 @@ Caso seja um produto com alíquota zero esse objeto pode ser enviado sem valores ";Objeto;;Opcional;;;0;1;"";Não permitido;object;; /data/financialTransactionTax/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04; /data/financialTransactionTax/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/blockedBalance;blockedBalance;Valor não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros).;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/blockedBalance;blockedBalance;Valor não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros). Prazo de carência não é considerado como bloqueio.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/blockedBalance/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04; /data/blockedBalance/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; /data/purchaseUnitPrice;purchaseUnitPrice;Valor unitário negociado com o cliente na data de aquisição.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; diff --git a/dictionary/treasureTitlesGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv b/dictionary/treasureTitlesGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv index 8ebce17da..fa1dfdf95 100644 --- a/dictionary/treasureTitlesGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv +++ b/dictionary/treasureTitlesGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv @@ -54,5 +54,5 @@ Nos casos em que se tratar de movimento de saída e a instituição não tiver a [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. ";Texto;8;Condicional;^\d{1}\.\d{6}$;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. -";Não permitido;string;0.300000; +";Não permitido;string;0.300000;8 /data/transactionId;transactionId;Código ou identificador único prestado pela instituição para individualizar o movimento.;Texto;100;Obrigatório;^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$;;1;1;"";Não permitido;string;ABCD2126019929279212650822221989319253344; diff --git a/dictionary/treasureTitlesGetInvestmentsInvestmentIdTransactions_v1.csv b/dictionary/treasureTitlesGetInvestmentsInvestmentIdTransactions_v1.csv index 8ebce17da..fa1dfdf95 100644 --- a/dictionary/treasureTitlesGetInvestmentsInvestmentIdTransactions_v1.csv +++ b/dictionary/treasureTitlesGetInvestmentsInvestmentIdTransactions_v1.csv @@ -54,5 +54,5 @@ Nos casos em que se tratar de movimento de saída e a instituição não tiver a [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. ";Texto;8;Condicional;^\d{1}\.\d{6}$;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. -";Não permitido;string;0.300000; +";Não permitido;string;0.300000;8 /data/transactionId;transactionId;Código ou identificador único prestado pela instituição para individualizar o movimento.;Texto;100;Obrigatório;^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$;;1;1;"";Não permitido;string;ABCD2126019929279212650822221989319253344; diff --git a/dictionary/treasureTitlesGetInvestmentsInvestmentId_v1.csv b/dictionary/treasureTitlesGetInvestmentsInvestmentId_v1.csv index 33a55ff78..5b0822c87 100644 --- a/dictionary/treasureTitlesGetInvestmentsInvestmentId_v1.csv +++ b/dictionary/treasureTitlesGetInvestmentsInvestmentId_v1.csv @@ -4,7 +4,7 @@ : código universal que identifica cada valor mobiliário ou instrumento financeiro, conforme Norma ISO 6166. ";Texto;12;Obrigatório;^[A-Z]{2}([A-Z0-9]){9}\d{1}$;;1;1;"";Não permitido;string;BRCST4CTF001; -/data/productName;productName;Descrição do ativo em questão.;Texto;70;Obrigatório;[\w\W\s]*;;1;1;"";Não permitido;string;TESOURODIRETO; +/data/productName;productName;Nome do título em questão, conforme listado no site do Tesouro Direto [https://www.tesourodireto.com.br](https://www.tesourodireto.com.br);Texto;70;Obrigatório;[\w\W\s]*;;1;1;"";Não permitido;string;Tesouro Selic 2025; /data/remuneration;remuneration;Objeto para detalhamento de remuneração do titulo.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/remuneration/indexer;indexer;Índice utilizado como referência para a correção da rentabilidade e/ou rendimentos do ativo (CDI, DI , TR, IPCA, IGP_M, IGP_DI, INPC, BCP, TLC, SELIC, PRE_FIXADO e OUTROS);Texto;;Obrigatório;;"CDI DI @@ -27,12 +27,12 @@ OUTROS";1;1;"";Não permitido;string;CDI; [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido com o valor ‘PRE FIXADO’. ";Texto;8;Condicional;^\d{1}\.\d{6}$;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido com o valor ‘PRE FIXADO’. -";Não permitido;string;0.300000; +";Não permitido;string;0.300000;8 /data/remuneration/postFixedIndexerPercentage;postFixedIndexerPercentage;"Percentual do indexador da aquisição do contrato. [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido de forma diferente de ‘PRE FIXADO’. ";Texto;8;Condicional;^\d{1}\.\d{6}$;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido de forma diferente de ‘PRE FIXADO’. -";Não permitido;string;1.100000; +";Não permitido;string;1.100000;8 /data/remuneration/ratePeriodicity;ratePeriodicity;Periodicidade da taxa de remuneração (mensal, anual, diário e semestral);Texto;;Obrigatório;;"MENSAL ANUAL DIARIO diff --git a/dictionary/variableIncomesGetInvestmentsInvestmentIdBalances_v1.csv b/dictionary/variableIncomesGetInvestmentsInvestmentIdBalances_v1.csv index 777c28767..97967fd81 100644 --- a/dictionary/variableIncomesGetInvestmentsInvestmentIdBalances_v1.csv +++ b/dictionary/variableIncomesGetInvestmentsInvestmentIdBalances_v1.csv @@ -6,10 +6,10 @@ /data/grossAmount;grossAmount;Valor do investimento anterior à dedução de impostos, taxas e tarifas (se houver), atualizado na data de referência. Quantidade de ativos dividido pelo Fator de cotação e multiplicado pelo pelo preço de fechamento da data de referência.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/grossAmount/amount;amount;Valor relacionado ao objeto.;Texto;21;Obrigatório;^-?\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04; /data/grossAmount/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/blockedBalance;blockedBalance;Valor não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros).;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/blockedBalance;blockedBalance;Valor não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros). Prazo de carência não é considerado como bloqueio.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/blockedBalance/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.04; /data/blockedBalance/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/quantity;quantity;Quatidade total do ativo na data de referência.;Texto;24;Obrigatório;^\d{1,15}\.\d{2,8}$;;1;1;"";Não permitido;string;1000.00000004; +/data/quantity;quantity;Quatidade total do ativo na data de referência.;Texto;25;Obrigatório;^-?\d{1,15}\.\d{2,8}$;;1;1;"";Não permitido;string;1000.00000004; /data/closingPrice;closingPrice;Preço de fechamento da data de referência.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; -/data/closingPrice/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.0004; +/data/closingPrice/amount;amount;Valor relacionado ao objeto.;Texto;21;Obrigatório;^-?\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.0004; /data/closingPrice/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; diff --git a/dictionary/variableIncomesGetInvestmentsInvestmentIdBrokerNotesBrokerNoteId_v1.csv b/dictionary/variableIncomesGetInvestmentsInvestmentIdBrokerNotesBrokerNoteId_v1.csv index 9325275a9..1da35903b 100644 --- a/dictionary/variableIncomesGetInvestmentsInvestmentIdBrokerNotesBrokerNoteId_v1.csv +++ b/dictionary/variableIncomesGetInvestmentsInvestmentIdBrokerNotesBrokerNoteId_v1.csv @@ -24,12 +24,12 @@ Pode ser cobrada como um valor fixo por operação, ou um como um percentual sob /data/clearingCustodyFee;clearingCustodyFee;Taxa cobrada pelas IF para custódia.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/clearingCustodyFee/amount;amount;Valor relacionado ao objeto.;Texto;21;Obrigatório;^-?\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;13.8751; /data/clearingCustodyFee/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/taxes;taxes;Impostos cobrados na operação, exceto imposto de renda.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/taxes;taxes;Impostos cobrados na operação, inclusive imposto de renda day-trade, exceto imposto de renda retido na fonte.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/taxes/amount;amount;Valor relacionado ao objeto.;Texto;21;Obrigatório;^-?\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;13.8751; /data/taxes/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; /data/incomeTax;incomeTax;Imposto de renda retido na fonte.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/incomeTax/amount;amount;Valor relacionado ao objeto.;Texto;21;Obrigatório;^-?\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;13.8751; /data/incomeTax/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; -/data/netValue;netValue;Valor bruto da nota de negociação após despesas com taxa de corretagem, taxa de liquidação, taxa de registro, taxa A.N.A, emolumentos, taxa de custódia, impostos e IRRF.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; +/data/netValue;netValue;Valor líquido da nota de negociação após despesas com taxa de corretagem, taxa de liquidação, taxa de registro, taxa A.N.A, emolumentos, taxa de custódia, impostos e IRRF.;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; /data/netValue/amount;amount;Valor relacionado ao objeto.;Texto;21;Obrigatório;^-?\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;4889.0012; /data/netValue/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; diff --git a/dictionary/variableIncomesGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv b/dictionary/variableIncomesGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv index 817aca0e2..cf9200e3a 100644 --- a/dictionary/variableIncomesGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv +++ b/dictionary/variableIncomesGetInvestmentsInvestmentIdTransactionsCurrent_v1.csv @@ -2,18 +2,20 @@ /data;data;;Lista;;Obrigatório;;;0;N;"";Não permitido;array;; /data/type;type;"Tipo de movimentação na visão de investimento: entrada ou saída. Nos casos de pagamento de dividendos, JCP e aluguéis, fica convencionado que será considerado que o tipo de movimento será saída. ";Texto;;Obrigatório;;"ENTRADA -SAIDA";1;1;"";Não permitido;string;ENTRADA; -/data/transactionType;transactionType;"O campo deve classificar a movimentação em um dos tipos descritos: compra, venda, dividendos, JCP, aluguéis, transferência de custódia, transferência de titularidade e outros. O transmissor deve classificar as movimentações disponíveis associando-a a um dos itens do Enum listado neste campo. A opção OUTROS só deve ser utilizada para os casos em que de fato a movimentação compartilhada não possa ser classificada como um dos itens deste Enum. +SAIDA";1;1;"";Não permitido;string;SAIDA; +/data/transactionType;transactionType;"O campo deve classificar a movimentação em um dos tipos descritos: compra, venda, dividendos, JCP, aluguéis, transferência de custódia, transferência de titularidade e outros. +O transmissor deve classificar as movimentações disponíveis associando-a a um dos itens do Enum listado neste campo. +A opção OUTROS só deve ser utilizada para os casos em que de fato a movimentação compartilhada não possa ser classificada como um dos itens deste Enum. +A expressão “aluguéis” deverá ser utilizada apenas para informar os juros/remuneração pagos/recebidos pelo cliente dos contratos de ações alugadas, seguindo o mesmo entendimento de ENTRADA/SAÍDA da expressão “dividendos”. ";Texto;;Obrigatório;;"COMPRA VENDA DIVIDENDOS JCP ALUGUEIS -INPLIT -SPLIT_TRANSFERENCIA_CUSTODIA +TRANSFERENCIA_CUSTODIA TRANSFERENCIA_TITULARIDADE OUTROS";1;1;"";Não permitido;string;DIVIDENDOS; -/data/typeAdditionalInfo;typeAdditionalInfo;"Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. +/data/transactionTypeAdditionalInfo;transactionTypeAdditionalInfo;"Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com o valor 'OUTROS'. ";Texto;100;Condicional;[\w\W\s]*;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com o valor 'OUTROS'. @@ -27,10 +29,10 @@ OUTROS";1;1;"";Não permitido;string;DIVIDENDOS; ";Texto;24;Opcional;^\d{1,15}\.\d{2,8}$;;0;1;"";Não permitido;string;100.0005; /data/transactionUnitPrice;transactionUnitPrice;"Preço unitário da movimentação: valor da unidade do produto na movimentação do investimento. -[Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA' ou 'ALUGUEIS'. -";Objeto;;Condicional;;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA' ou 'ALUGUEIS'. +[Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA' ou 'VENDA'. +";Objeto;;Condicional;;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA' ou 'VENDA'. ";Não permitido;object;; -/data/transactionUnitPrice/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.0004; +/data/transactionUnitPrice/amount;amount;Valor relacionado ao objeto.;Texto;21;Obrigatório;^-?\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.0004; /data/transactionUnitPrice/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; /data/transactionQuantity;transactionQuantity;"Quantidade de ativos movimentados. diff --git a/dictionary/variableIncomesGetInvestmentsInvestmentIdTransactions_v1.csv b/dictionary/variableIncomesGetInvestmentsInvestmentIdTransactions_v1.csv index 817aca0e2..cf9200e3a 100644 --- a/dictionary/variableIncomesGetInvestmentsInvestmentIdTransactions_v1.csv +++ b/dictionary/variableIncomesGetInvestmentsInvestmentIdTransactions_v1.csv @@ -2,18 +2,20 @@ /data;data;;Lista;;Obrigatório;;;0;N;"";Não permitido;array;; /data/type;type;"Tipo de movimentação na visão de investimento: entrada ou saída. Nos casos de pagamento de dividendos, JCP e aluguéis, fica convencionado que será considerado que o tipo de movimento será saída. ";Texto;;Obrigatório;;"ENTRADA -SAIDA";1;1;"";Não permitido;string;ENTRADA; -/data/transactionType;transactionType;"O campo deve classificar a movimentação em um dos tipos descritos: compra, venda, dividendos, JCP, aluguéis, transferência de custódia, transferência de titularidade e outros. O transmissor deve classificar as movimentações disponíveis associando-a a um dos itens do Enum listado neste campo. A opção OUTROS só deve ser utilizada para os casos em que de fato a movimentação compartilhada não possa ser classificada como um dos itens deste Enum. +SAIDA";1;1;"";Não permitido;string;SAIDA; +/data/transactionType;transactionType;"O campo deve classificar a movimentação em um dos tipos descritos: compra, venda, dividendos, JCP, aluguéis, transferência de custódia, transferência de titularidade e outros. +O transmissor deve classificar as movimentações disponíveis associando-a a um dos itens do Enum listado neste campo. +A opção OUTROS só deve ser utilizada para os casos em que de fato a movimentação compartilhada não possa ser classificada como um dos itens deste Enum. +A expressão “aluguéis” deverá ser utilizada apenas para informar os juros/remuneração pagos/recebidos pelo cliente dos contratos de ações alugadas, seguindo o mesmo entendimento de ENTRADA/SAÍDA da expressão “dividendos”. ";Texto;;Obrigatório;;"COMPRA VENDA DIVIDENDOS JCP ALUGUEIS -INPLIT -SPLIT_TRANSFERENCIA_CUSTODIA +TRANSFERENCIA_CUSTODIA TRANSFERENCIA_TITULARIDADE OUTROS";1;1;"";Não permitido;string;DIVIDENDOS; -/data/typeAdditionalInfo;typeAdditionalInfo;"Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. +/data/transactionTypeAdditionalInfo;transactionTypeAdditionalInfo;"Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com o valor 'OUTROS'. ";Texto;100;Condicional;[\w\W\s]*;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com o valor 'OUTROS'. @@ -27,10 +29,10 @@ OUTROS";1;1;"";Não permitido;string;DIVIDENDOS; ";Texto;24;Opcional;^\d{1,15}\.\d{2,8}$;;0;1;"";Não permitido;string;100.0005; /data/transactionUnitPrice;transactionUnitPrice;"Preço unitário da movimentação: valor da unidade do produto na movimentação do investimento. -[Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA' ou 'ALUGUEIS'. -";Objeto;;Condicional;;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA' ou 'ALUGUEIS'. +[Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA' ou 'VENDA'. +";Objeto;;Condicional;;;0;1;" Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA' ou 'VENDA'. ";Não permitido;object;; -/data/transactionUnitPrice/amount;amount;Valor relacionado ao objeto.;Texto;20;Obrigatório;^\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.0004; +/data/transactionUnitPrice/amount;amount;Valor relacionado ao objeto.;Texto;21;Obrigatório;^-?\d{1,15}\.\d{2,4}$;;1;1;"";Não permitido;string;1000.0004; /data/transactionUnitPrice/currency;currency;Moeda referente ao valor monetário, seguindo o modelo ISO-4217.;Texto;3;Obrigatório;^[A-Z]{3}$;;1;1;"";Não permitido;string;BRL; /data/transactionQuantity;transactionQuantity;"Quantidade de ativos movimentados. diff --git a/dictionary/variableIncomesGetInvestmentsInvestmentId_v1.csv b/dictionary/variableIncomesGetInvestmentsInvestmentId_v1.csv index 2796f8712..bb4236323 100644 --- a/dictionary/variableIncomesGetInvestmentsInvestmentId_v1.csv +++ b/dictionary/variableIncomesGetInvestmentsInvestmentId_v1.csv @@ -1,6 +1,6 @@ Xpath;Nome;Definição;Tipo de Dado;Tamanho;Mandatoriedade;Formato;Domínio;Mínimo de Ocorrências;Máximo de Ocorrências;Restrições;Nulidade;Tipo de Dado Json;Exemplo;Tamanho mínimo /data;data;;Objeto;;Obrigatório;;;1;1;"";Não permitido;object;; -/data/issuerInstitutionCnpjNumber;issuerInstitutionCnpjNumber;CNPJ da instituição emissora.;Texto;14;Obrigatório;^\d{14}$;;1;1;"";Não permitido;string;11225860000140; +/data/issuerInstitutionCnpjNumber;issuerInstitutionCnpjNumber;CNPJ da instituição emissora. Caso a transmissora possua a informação o envio deste campo é obrigatório.;Texto;14;Opcional;^\d{14}$;;0;1;"";Não permitido;string;11225860000140; /data/isinCode;isinCode;"Código ISIN da emissão, Código ISIN do produto, Código da emissora: código universal que identifica cada valor mobiliário ou instrumento financeiro, conforme Norma ISO 6166. ";Texto;12;Obrigatório;^[A-Z]{2}([A-Z0-9]){9}\d{1}$;;1;1;"";Não permitido;string;BRCST4CTF001; /data/ticker;ticker;Código de negociação para identificação de ativos negociados em bolsa.;Texto;35;Obrigatório;[\w\W\s]*;;1;1;"";Não permitido;string;PETR4; diff --git a/dictionary/variableIncomesGetInvestments_v1.csv b/dictionary/variableIncomesGetInvestments_v1.csv index 221b62208..a85f27253 100644 --- a/dictionary/variableIncomesGetInvestments_v1.csv +++ b/dictionary/variableIncomesGetInvestments_v1.csv @@ -2,4 +2,4 @@ /data;data;;Lista;;Obrigatório;;;0;N;"";Não permitido;array;; /data/brandName;brandName;Nome da Marca reportada pelo participante no Open Finance. Recomenda-se utilizar, sempre que possível, o mesmo nome de marca atribuído no campo do diretório Customer Friendly Server Name (Authorisation Server).;Texto;80;Obrigatório;[\w\W\s]*;;1;1;"";Não permitido;string;Organização A; /data/companyCnpj;companyCnpj;Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. Deve-se ter apenas os números do CNPJ, sem máscara.;Texto;14;Obrigatório;^\d{14}$;;1;1;"";Não permitido;string;21281590001660; -/data/investmentId;investmentId;Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.;Texto;100;Obrigatório;^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$;;1;1;"";Não permitido;string;92792126019929200000000000000000000000000; +/data/investmentId;investmentId;Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora. Nos casos em que o cliente, após completar 12 meses da última movimentação e com quantidade de ativos zerada (cliente não tem mais posse do produto sob custódia da transmissora), compre novamente o ativo que já investiu em períodos passados, manter o mesmo investmentId anteriormente utilizado.;Texto;100;Obrigatório;^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$;;1;1;"";Não permitido;string;92792126019929200000000000000000000000000; diff --git a/swagger-apis/bank-fixed-incomes/1.0.0-rc2.0.yml b/swagger-apis/bank-fixed-incomes/1.0.0-rc2.0.yml new file mode 100644 index 000000000..fbc02d00a --- /dev/null +++ b/swagger-apis/bank-fixed-incomes/1.0.0-rc2.0.yml @@ -0,0 +1,1410 @@ +openapi: 3.0.0 +info: + title: API Bank Fixed Incomes - Open Finance Brasil + description: | + API de informações de operações de Renda Fixa Bancária Open Finance Brasil (Fase 4). API que retorna informações de operações de investimento do tipo Renda Fixa Bancária (CDB/RDB, LCI e LCA) mantidas nas instituições transmissoras por seus clientes, incluindo dados como denominação do produto, rentabilidade, quantidade, prazos, saldos em posição do cliente e movimentações financeiras. Não possui segregação entre pessoa natural e pessoa jurídica. Requer consentimento do cliente para todos os endpoints. A exposição se dará por cada operação de renda fixa contratada pelo cliente. + version: 1.0.0-rc2.0 + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' + contact: + name: Governança do Open Finance Brasil – Especificações + email: gt-interfaces@openbankingbr.org + url: 'https://openbanking-brasil.github.io/areadesenvolvedor/' +servers: + - url: 'https://api.banco.com.br/open-banking/bank-fixed-incomes/v1' + description: Servidor de Produção + - url: 'https://apih.banco.com.br/open-banking/bank-fixed-incomes/v1' + description: Servidor de Homologação +tags: + - name: Product List + description: Obtém a lista de operações de Renda Fixa Bancária mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + - name: Product Identification + description: Obtém os dados da operação de Renda Fixa Bancária identificada por investmentId. + - name: Balances + description: Obtém a posição da operação de Renda Fixa Bancária identificada por investmentId. + - name: Transactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Bancária identificada por investmentId. + - name: Transactions Current + description: 'Obtém as movimentações recentes da operação de Renda Fixa Bancária identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' +paths: + /investments: + get: + tags: + - Product List + summary: Obtém a lista de operações de Renda Fixa Bancária mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + operationId: banktFixedIncomesGetInvestments + description: Obtém a lista de operações de Renda Fixa Bancária mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + parameters: + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + responses: + '200': + $ref: '#/components/responses/OkResponseBankFixedIncomesProductList' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - bank-fixed-incomes + '/investments/{investmentId}': + get: + tags: + - Product Identification + summary: Obtém os dados da operação de Renda Fixa Bancária identificada por investmentId. + operationId: banktFixedIncomesGetInvestmentsInvestmentId + description: Obtém os dados da operação de Renda Fixa Bancária identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseBankFixedIncomeIdentifyProduct' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - bank-fixed-incomes + '/investments/{investmentId}/balances': + get: + tags: + - Balances + summary: Obtém a posição da operação de Renda Fixa Bancária identificada por investmentId. + operationId: banktFixedIncomesGetInvestmentsInvestmentIdBalances + description: Obtém a posição da operação de Renda Fixa Bancária identificada por investmentId. + parameters: + - name: investmentId + in: path + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/OkResponseBankFixedIncomesBalances' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - bank-fixed-incomes + '/investments/{investmentId}/transactions': + get: + tags: + - Transactions + summary: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Bancária identificada por investmentId. + operationId: banktFixedIncomesGetInvestmentsInvestmentIdTransactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Bancária identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDate' + - $ref: '#/components/parameters/toTransactionDate' + responses: + '200': + $ref: '#/components/responses/ResponseBankFixedIncomesProductMovement' + '400': + $ref: '#/components/responses/TransactionsBadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/TransactionsUnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/TransactionsForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/TransactionsNotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/TransactionsMethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/TransactionsNotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/TransactionsUnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/TransactionsLockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TransactionsTooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/TransactionsInternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/TransactionsGatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/TransactionsSiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/TransactionsDefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - bank-fixed-incomes + '/investments/{investmentId}/transactions-current': + get: + tags: + - Transactions Current + summary: 'Obtém as movimentações recentes da operação de Renda Fixa Bancária identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + operationId: banktFixedIncomesGetInvestmentsInvestmentIdTransactionsCurrent + description: 'Obtém as movimentações recentes da operação de Renda Fixa Bancária identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDateMaxLimited' + - $ref: '#/components/parameters/toTransactionDateMaxLimited' + responses: + '200': + $ref: '#/components/responses/ResponseBankFixedIncomesProductMovement' + '400': + $ref: '#/components/responses/TransactionsBadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/TransactionsUnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/TransactionsForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/TransactionsNotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/TransactionsMethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/TransactionsNotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/TransactionsUnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/TransactionsLockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TransactionsTooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/TransactionsInternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/TransactionsGatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/TransactionsSiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/TransactionsDefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - bank-fixed-incomes +components: + schemas: + ResponseError: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + additionalProperties: false + meta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + additionalProperties: false + ResponseErrorMetaSingle: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + ResponseBankFixedIncomesProductList: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + type: object + description: Lista de títulos de renda fixa bancária mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento + required: + - brandName + - companyCnpj + - investmentType + - investmentId + properties: + brandName: + type: string + description: 'Nome da Marca reportada pelo participante no Open Finance. Recomenda-se utilizar, sempre que possível, o mesmo nome de marca atribuído no campo do diretório Customer Friendly Server Name (Authorisation Server).' + pattern: '[\w\W\s]*' + example: Organização A + maxLength: 80 + companyCnpj: + type: string + description: 'Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. Deve-se ter apenas os números do CNPJ, sem máscara' + maxLength: 14 + pattern: '^\d{14}$' + example: '21281590001660' + investmentType: + $ref: '#/components/schemas/EnumInvestmentType' + investmentId: + type: string + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + additionalProperties: false + links: + $ref: '#/components/schemas/BankFixedIncomeLinks' + meta: + $ref: '#/components/schemas/BankFixedIncomesMeta' + additionalProperties: false + ResponseBankFixedIncomesProductIdentification: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/IdentifyProduct' + links: + $ref: '#/components/schemas/BankFixedIncomeLinks' + meta: + $ref: '#/components/schemas/BankFixedIncomesMeta' + additionalProperties: false + ResponseBankFixedIncomesBalances: + type: object + required: + - data + - links + - meta + properties: + data: + type: object + description: Lista de títulos de renda fixa bancária mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento + required: + - referenceDateTime + - quantity + - updatedUnitPrice + - grossAmount + - netAmount + - incomeTax + - financialTransactionTax + - blockedBalance + - purchaseUnitPrice + properties: + referenceDateTime: + type: string + format: date-time + description: 'data e hora da última posição consolidada disponível a que se referem os dados transacionais do cliente disponíveis nos canais eletrônicos; Na representação data deve se considerar os minutos e segundos como zero (00:00:00Z).' + pattern: '(^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$)' + example: '2022-07-21T17:32:00Z' + maxLength: 20 + quantity: + type: string + format: double + description: Quantidade de títulos detidos na data da posição do cliente + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.0004' + updatedUnitPrice: + type: object + required: + - amount + - currency + description: Valor bruto unitário atualizado na data de referência. + properties: + amount: + description: Valor relacionado ao objeto. + type: string + format: double + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.000004' + currency: + $ref: '#/components/schemas/BalanceCurrency' + grossAmount: + description: Valor do investimento que se refere a quantidade multiplicado pelo PU atualizado na data de referência; + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/BalanceAmount' + currency: + $ref: '#/components/schemas/BalanceCurrency' + netAmount: + description: 'Valor do investimento atualizado na data de referência, posterior a dedução de impostos (IOF e IR).' + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/BalanceAmount' + currency: + $ref: '#/components/schemas/BalanceCurrency' + incomeTax: + type: object + required: + - amount + - currency + description: Valor do imposto provisionado considerando a alíquota vigente na data de referência. + properties: + amount: + $ref: '#/components/schemas/BalanceAmount' + currency: + $ref: '#/components/schemas/BalanceCurrency' + financialTransactionTax: + type: object + required: + - amount + - currency + description: Valor do imposto (IOF) provisionado considerando a alíquota vigente na data de referência. + properties: + amount: + $ref: '#/components/schemas/BalanceAmount' + currency: + $ref: '#/components/schemas/BalanceCurrency' + blockedBalance: + type: object + required: + - amount + - currency + description: 'Valor líquido não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros).' + properties: + amount: + $ref: '#/components/schemas/BalanceAmount' + currency: + $ref: '#/components/schemas/BalanceCurrency' + purchaseUnitPrice: + type: object + required: + - amount + - currency + description: Valor unitário negociado com o cliente na data de aquisição + properties: + amount: + description: Valor relacionado ao objeto. + type: string + format: double + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.000004' + currency: + $ref: '#/components/schemas/BalanceCurrency' + preFixedRate: + type: string + format: double + description: | + Taxa de remuneração acordada com o cliente na contratação. + Em casos de produtos progressivos, considerar taxa vigente. p.ex. 0.014500. + O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros(representação de porcentagem p.ex: 0.150000. + Este valor representa 15%. O valor 1 representa 100%). É esperado que o preenchimento deste campo pelas participantes seja enviado de acordo com o campo preFixedRate do endpoint /investment/{investmentId}. + pattern: '^\d{1}\.\d{6}$' + maxLength: 8 + minLength: 8 + example: '0.300000' + postFixedIndexerPercentage: + type: string + format: double + description: | + Percentual do indexador acordado com o cliente na contratação. + Em casos de produtos progressivos, considerar taxa vigente. p.ex. 0.014500. + O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros(representação de porcentagem p.ex: 0.150000. + Este valor representa 15%. O valor 1 representa 100%). É esperado que o preenchimento deste campo pelas participantes seja enviado de acordo com o campo postFixedIndexerPercentage do endpoint /investment/{investmentId}. + pattern: '^\d{1}\.\d{6}$' + maxLength: 8 + minLength: 8 + example: '1.000000' + links: + $ref: '#/components/schemas/BankFixedIncomeLinks' + meta: + $ref: '#/components/schemas/BankFixedIncomesMeta' + additionalProperties: false + ResponseBankFixedIncomesTransactions: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/BankFixedIncomesProductMovement' + links: + $ref: '#/components/schemas/BankFixedIncomeLinks' + meta: + $ref: '#/components/schemas/BankFixedIncomesTransactionsMeta' + additionalProperties: false + IdentifyProduct: + type: object + required: + - issuerInstitutionCnpjNumber + - investmentType + - remuneration + - issueUnitPrice + - dueDate + - issueDate + - purchaseDate + - gracePeriodDate + properties: + issuerInstitutionCnpjNumber: + type: string + description: CNPJ da instituição emissora. + maxLength: 14 + pattern: '^\d{14}$' + example: '11225860000140' + isinCode: + type: string + description: | + Código ISIN da emissão, Código ISIN do produto, Código da emissora (campo opcional): código universal que identifica cada valor mobiliário ou instrumento financeiro, conforme Norma ISO 6166 + maxLength: 12 + minLength: 12 + pattern: '^[A-Z]{2}([A-Z0-9]){9}\d{1}$' + example: BRCST4CTF001 + investmentType: + $ref: '#/components/schemas/EnumInvestmentType' + remuneration: + $ref: '#/components/schemas/Remuneration' + issueUnitPrice: + type: object + description: Preço unitário de emissão do título. + required: + - amount + - currency + properties: + amount: + type: string + format: double + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.000004' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/CurrencyCode' + dueDate: + type: string + format: date + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + description: Data de vencimento do título. + issueDate: + type: string + format: date + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-16' + description: Data de emissão do título. + clearingCode: + type: string + maxLength: 30 + pattern: '[\w\W-]*' + example: CDB421GPXXX + description: Código de registro do ativo na clearing. + purchaseDate: + type: string + format: date + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + description: Data de aquisição do cliente. + gracePeriodDate: + type: string + format: date + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-16' + description: Data até a qual o cliente não poderá resgatar antecipadamente seu investimento. + additionalProperties: false + EnumInvestmentType: + type: string + description: 'Especificação do ativo em questão (CDB, RDB, LCI ou LCA)' + enum: + - CDB + - RDB + - LCI + - LCA + example: CDB + EnumBankFixedIncomeIndexer: + type: string + description: 'Índice utilizado como referência para a correção da rentabilidade e/ou rendimentos do ativo (CDI, DI , TR, IPCA, IGP_M, IGP_DI, INPC, BCP, TLC, SELIC, PRE_FIXADO e OUTROS)' + enum: + - CDI + - DI + - TR + - IPCA + - IGP_M + - IGP_DI + - INPC + - BCP + - TLC + - SELIC + - PRE_FIXADO + - OUTROS + example: CDI + Remuneration: + type: object + description: Objeto para detalhamento de remuneração do titulo. + required: + - rateType + - ratePeriodicity + - calculation + - indexer + properties: + preFixedRate: + type: string + format: double + pattern: '^\d{1}\.\d{6}$' + maxLength: 8 + minLength: 8 + example: '0.300000' + description: | + Taxa de remuneração pré fixada de emissão do título. p.ex. 0.014500. + + O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros(representação de porcentagem p.ex: 0.150000. Este valor representa 15%. O valor 1 representa 100%). + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'PRE_FIXADO' no campo 'indexer' ou quando se tratar de produto com remuneração híbrida. + postFixedIndexerPercentage: + type: string + format: double + pattern: '^\d{1}\.\d{6}$' + maxLength: 8 + minLength: 8 + example: '1.100000' + description: | + Percentual do indexador pós fixado de emissão do título. p.ex. 0.014500. + + O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros(representação de porcentagem p.ex: 0.150000. Este valor representa 15%. O valor 1 representa 100%). + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido de forma diferente de 'PRE_FIXADO' ou quando se tratar de produto com remuneração híbrida. + rateType: + $ref: '#/components/schemas/EnumRateType' + ratePeriodicity: + $ref: '#/components/schemas/EnumRatePeriodicity' + calculation: + $ref: '#/components/schemas/EnumCalculation' + indexer: + $ref: '#/components/schemas/EnumBankFixedIncomeIndexer' + indexerAdditionalInfo: + type: string + description: | + Informações adicionais do indexador + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'Outros' no campo 'indexer'. + maxLength: 50 + example: Dólar + pattern: '[\w\W\s]*' + additionalProperties: false + EnumRateType: + type: string + description: | + "Tipo da taxa de remuneração (linear ou exponencial)" + enum: + - LINEAR + - EXPONENCIAL + example: LINEAR + EnumRatePeriodicity: + type: string + description: | + Periodicidade da taxa de remuneração (mensal, anual, diário, semestral) + enum: + - MENSAL + - ANUAL + - DIARIO + - SEMESTRAL + example: MENSAL + EnumCalculation: + type: string + description: | + "Base de cálculo (dias úteis ou dias corridos)" + enum: + - DIAS_UTEIS + - DIAS_CORRIDOS + example: DIAS_CORRIDOS + BankFixedIncomesMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + BankFixedIncomesTransactionsMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + BankFixedIncomeLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + BankFixedIncomesProductMovement: + type: object + required: + - type + - transactionType + - transactionDate + - transactionUnitPrice + - transactionQuantity + - transactionGrossValue + - transactionNetValue + - transactionId + properties: + type: + $ref: '#/components/schemas/EnumBankFixedIncomeMovementType' + transactionType: + $ref: '#/components/schemas/EnumBankFixedIncomeTransactionType' + transactionTypeAdditionalInfo: + type: string + maxLength: 100 + pattern: '[\w\W\s]*' + description: | + Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'Outros' no campo Motivo da movimentação. + transactionDate: + type: string + format: date + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + description: Data da movimentação. + transactionUnitPrice: + type: object + description: Preço unitário bruto negociado na transação. + required: + - amount + - currency + properties: + amount: + type: string + format: double + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.04' + currency: + $ref: '#/components/schemas/CurrencyCode' + transactionQuantity: + type: string + format: double + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.25' + description: Quantidade de títulos envolvidos na movimentação. + transactionGrossValue: + type: object + description: Valor bruto da transação (Preço unitário da movimentação x Quantidade). + required: + - amount + - currency + properties: + amount: + type: string + format: double + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + $ref: '#/components/schemas/CurrencyCode' + incomeTax: + type: object + description: | + Valor do imposto de renda recolhido na transação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + $ref: '#/components/schemas/CurrencyCode' + financialTransactionTax: + type: object + description: | + Valor do IOF recolhido na transação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/CurrencyCode' + transactionNetValue: + type: object + description: Valor líquido da transação. + required: + - amount + - currency + properties: + amount: + type: string + format: double + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/CurrencyCode' + remunerationTransactionRate: + type: string + format: double + maxLength: 8 + minLength: 3 + pattern: '^\d{1}\.\d{6}$' + example: '0.300000' + description: | + Taxa de remuneração da transação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. + indexerPercentage: + type: string + format: double + maxLength: 8 + minLength: 3 + pattern: '^\d{1}\.\d{6}$' + example: '1.100000' + description: | + Percentual máximo do indexador acordado com o cliente na contratação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. + transactionId: + type: string + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + description: Código ou identificador único prestado pela instituição que mantém a representação individual do movimento. + additionalProperties: false + EnumBankFixedIncomeMovementType: + type: string + description: | + Tipo de movimentação na visão de investimento + + - ENTRADA: APLICACAO, CANCELAMENTO, TRANSFERENCIA_TITULARIDADE, TRANSFERENCIA_CUSTODIA, OUTROS. + + - SAIDA: RESGATE, CANCELAMENTO, VENCIMENTO, PAGAMENTO_JUROS, AMORTIZACAO, TRANSFERENCIA_TITULARIDADE, TRANSFERENCIA_CUSTODIA, OUTROS. + + Por exemplo, para movimentação de CANCELAMENTO, tipicamente, será o type contrário ao evento originário. Ou seja, para cancelamento de APLICACAO, considera-se type SAIDA; para cancelamento de RESGATE, considera-se type ENTRADA. + enum: + - ENTRADA + - SAIDA + example: ENTRADA + EnumBankFixedIncomeTransactionType: + type: string + description: 'Aplicação, resgate, cancelamento, vencimento, pagamento de juros, amortização, transferência de titularidade, transferência de custódia e outros.' + enum: + - APLICACAO + - RESGATE + - CANCELAMENTO + - VENCIMENTO + - PAGAMENTO_JUROS + - AMORTIZACAO + - TRANSFERENCIA_TITULARIDADE + - TRANSFERENCIA_CUSTODIA + - OUTROS + example: APLICACAO + CurrencyCode: + type: string + pattern: '^[A-Z]{3}$' + maxLength: 3 + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + example: BRL + BalanceCurrency: + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + type: string + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + BalanceAmount: + description: Valor relacionado ao objeto. + type: string + format: double + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.0004' + securitySchemes: + OAuth2AuthorizationCode: + type: oauth2 + description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados. + flows: + authorizationCode: + authorizationUrl: 'https://authserver.example/authorization' + tokenUrl: 'https://authserver.example/token' + scopes: + bank-fixed-incomes: Escopo necessário para acesso à API Bank Fixed Incomes. O controle dos endpoints específicos é feito via permissions. + parameters: + InvestmentId: + name: investmentId + in: path + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + example: '92792126019929200000000000000000000000000' + Authorization: + name: Authorization + in: header + description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado + required: true + schema: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + pagination-key: + name: pagination-key + in: query + description: 'Identificador de rechamada, utilizado para evitar a contagem de chamadas ao endpoint durante a paginação.' + schema: + type: string + maxLength: 2048 + pattern: '[\w\W\s]*' + page: + name: page + in: query + description: Número da página que está sendo requisitada (o valor da primeira página é 1). + schema: + type: integer + default: 1 + minimum: 1 + maximum: 2147483647 + format: int32 + pageSize: + name: page-size + in: query + description: Quantidade total de registros por páginas. A transmissora deve considerar entrada como 25, caso seja informado algum valor menor pela receptora. Enquanto houver mais que 25 registros a enviar, a transmissora deve considerar o mínimo por página como 25. Somente a última página retornada (ou primeira, no caso de página única) pode conter menos de 25 registros. Mais informações, acesse Especificações de APIs > Padrões > Paginação. + schema: + type: integer + default: 25 + minimum: 25 + format: int32 + maximum: 1000 + xCustomerUserAgent: + name: x-customer-user-agent + in: header + description: Indica o user-agent que o usuário utiliza. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiAuthDate: + name: x-fapi-auth-date + in: header + description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a [RFC7231](https://tools.ietf.org/html/rfc7231).Exemplo: Sun, 10 Sep 2017 19:43:31 UTC' + required: false + schema: + type: string + pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$' + minLength: 29 + maxLength: 29 + xFapiCustomerIpAddress: + name: x-fapi-customer-ip-address + in: header + description: O endereço IP do usuário se estiver atualmente logado com o receptor. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiInteractionId: + name: x-fapi-interaction-id + in: header + description: Um UUID RFC4122 usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela receptora (client) e o seu valor deve ser "espelhado" pela transmissora (server) no cabeçalho de resposta. + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + fromTransactionDate: + name: fromTransactionDate + description: | + Data inicial de filtragem. + + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + fromTransactionDateMaxLimited: + name: fromTransactionDate + description: | + Data inicial de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + toTransactionDate: + name: toTransactionDate + description: | + Data final de filtragem. + + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + toTransactionDateMaxLimited: + name: toTransactionDate + description: | + Data final de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + responses: + OkResponseBankFixedIncomesBalances: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseBankFixedIncomesBalances' + OkResponseBankFixedIncomesProductList: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseBankFixedIncomesProductList' + ResponseBankFixedIncomeIdentifyProduct: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseBankFixedIncomesProductIdentification' + ResponseBankFixedIncomesProductMovement: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseBankFixedIncomesTransactions' + BadRequestWithAdditionalProperties: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + ForbiddenWithAdditionalProperties: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + GatewayTimeoutWithAdditionalProperties: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + InternalServerErrorWithAdditionalProperties: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + LockedWithAdditionalProperties: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + MethodNotAllowedWithAdditionalProperties: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotAcceptableWithAdditionalProperties: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotFoundWithAdditionalProperties: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + TooManyRequestsWithAdditionalProperties: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + UnauthorizedWithAdditionalProperties: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + UnprocessableEntityWithAdditionalProperties: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + DefaultWithAdditionalProperties: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + SiteIsOverloadedWithAdditionalProperties: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + TransactionsBadRequestWithAdditionalProperties: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsForbiddenWithAdditionalProperties: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsGatewayTimeoutWithAdditionalProperties: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsInternalServerErrorWithAdditionalProperties: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsLockedWithAdditionalProperties: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsMethodNotAllowedWithAdditionalProperties: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsNotAcceptableWithAdditionalProperties: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsNotFoundWithAdditionalProperties: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsTooManyRequestsWithAdditionalProperties: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsUnauthorizedWithAdditionalProperties: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsUnprocessableEntityWithAdditionalProperties: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsDefaultWithAdditionalProperties: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsSiteIsOverloadedWithAdditionalProperties: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' diff --git a/swagger-apis/bank-fixed-incomes/1.0.0-rc3.0.yml b/swagger-apis/bank-fixed-incomes/1.0.0-rc3.0.yml new file mode 100644 index 000000000..5d3c54ed9 --- /dev/null +++ b/swagger-apis/bank-fixed-incomes/1.0.0-rc3.0.yml @@ -0,0 +1,1417 @@ +openapi: 3.0.0 +info: + title: API Bank Fixed Incomes - Open Finance Brasil + description: | + API de informações de operações de Renda Fixa Bancária Open Finance Brasil (Fase 4). API que retorna informações de operações de investimento do tipo Renda Fixa Bancária (CDB/RDB, LCI e LCA) mantidas nas instituições transmissoras por seus clientes, incluindo dados como denominação do produto, rentabilidade, quantidade, prazos, saldos em posição do cliente e movimentações financeiras. Não possui segregação entre pessoa natural e pessoa jurídica. Requer consentimento do cliente para todos os endpoints. A exposição se dará por cada operação de renda fixa contratada pelo cliente. + version: 1.0.0-rc3.0 + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' + contact: + name: Governança do Open Finance Brasil – Especificações + email: gt-interfaces@openbankingbr.org + url: 'https://openbanking-brasil.github.io/areadesenvolvedor/' +servers: + - url: 'https://api.banco.com.br/open-banking/bank-fixed-incomes/v1' + description: Servidor de Produção + - url: 'https://apih.banco.com.br/open-banking/bank-fixed-incomes/v1' + description: Servidor de Homologação +tags: + - name: Product List + description: Obtém a lista de operações de Renda Fixa Bancária mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + - name: Product Identification + description: Obtém os dados da operação de Renda Fixa Bancária identificada por investmentId. + - name: Balances + description: Obtém a posição da operação de Renda Fixa Bancária identificada por investmentId. + - name: Transactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Bancária identificada por investmentId. + - name: Transactions Current + description: 'Obtém as movimentações recentes da operação de Renda Fixa Bancária identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' +paths: + /investments: + get: + tags: + - Product List + summary: Obtém a lista de operações de Renda Fixa Bancária mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + operationId: banktFixedIncomesGetInvestments + description: Obtém a lista de operações de Renda Fixa Bancária mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + parameters: + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + responses: + '200': + $ref: '#/components/responses/OkResponseBankFixedIncomesProductList' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - bank-fixed-incomes + '/investments/{investmentId}': + get: + tags: + - Product Identification + summary: Obtém os dados da operação de Renda Fixa Bancária identificada por investmentId. + operationId: banktFixedIncomesGetInvestmentsInvestmentId + description: Obtém os dados da operação de Renda Fixa Bancária identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseBankFixedIncomeIdentifyProduct' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - bank-fixed-incomes + '/investments/{investmentId}/balances': + get: + tags: + - Balances + summary: Obtém a posição da operação de Renda Fixa Bancária identificada por investmentId. + operationId: banktFixedIncomesGetInvestmentsInvestmentIdBalances + description: | + Obtém a posição da operação de Renda Fixa Bancária identificada por investmentId. + + Nos casos em que não houver posição para o investimento, ou seja, quantidade de ativos e valores monetários zerados, mas o mesmo ainda estiver no prazo de exposição (até 12 meses após a última movimentação), deve se retornar status code 200 e para o payload de retorno considerar os valores abaixo. Campos não obrigatórios não devem ser retornados: + + - Valores monetários: 0.00 + - Quantidade de ativos: 0.00 + - Data e hora da última posição: mesmo conteúdo do campo requestDateTime + parameters: + - name: investmentId + in: path + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/OkResponseBankFixedIncomesBalances' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - bank-fixed-incomes + '/investments/{investmentId}/transactions': + get: + tags: + - Transactions + summary: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Bancária identificada por investmentId. + operationId: banktFixedIncomesGetInvestmentsInvestmentIdTransactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Bancária identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDate' + - $ref: '#/components/parameters/toTransactionDate' + responses: + '200': + $ref: '#/components/responses/ResponseBankFixedIncomesProductMovement' + '400': + $ref: '#/components/responses/TransactionsBadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/TransactionsUnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/TransactionsForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/TransactionsNotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/TransactionsMethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/TransactionsNotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/TransactionsUnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/TransactionsLockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TransactionsTooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/TransactionsInternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/TransactionsGatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/TransactionsSiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/TransactionsDefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - bank-fixed-incomes + '/investments/{investmentId}/transactions-current': + get: + tags: + - Transactions Current + summary: 'Obtém as movimentações recentes da operação de Renda Fixa Bancária identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + operationId: banktFixedIncomesGetInvestmentsInvestmentIdTransactionsCurrent + description: 'Obtém as movimentações recentes da operação de Renda Fixa Bancária identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDateMaxLimited' + - $ref: '#/components/parameters/toTransactionDateMaxLimited' + responses: + '200': + $ref: '#/components/responses/ResponseBankFixedIncomesProductMovement' + '400': + $ref: '#/components/responses/TransactionsBadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/TransactionsUnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/TransactionsForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/TransactionsNotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/TransactionsMethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/TransactionsNotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/TransactionsUnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/TransactionsLockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TransactionsTooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/TransactionsInternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/TransactionsGatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/TransactionsSiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/TransactionsDefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - bank-fixed-incomes +components: + schemas: + ResponseError: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + additionalProperties: false + meta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + additionalProperties: false + ResponseErrorMetaSingle: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + ResponseBankFixedIncomesProductList: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + type: object + description: Lista de títulos de renda fixa bancária mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento + required: + - brandName + - companyCnpj + - investmentType + - investmentId + properties: + brandName: + type: string + description: 'Nome da Marca reportada pelo participante no Open Finance. Recomenda-se utilizar, sempre que possível, o mesmo nome de marca atribuído no campo do diretório Customer Friendly Server Name (Authorisation Server).' + pattern: '[\w\W\s]*' + example: Organização A + maxLength: 80 + companyCnpj: + type: string + description: 'Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. Deve-se ter apenas os números do CNPJ, sem máscara' + maxLength: 14 + pattern: '^\d{14}$' + example: '21281590001660' + investmentType: + $ref: '#/components/schemas/EnumInvestmentType' + investmentId: + type: string + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + additionalProperties: false + links: + $ref: '#/components/schemas/BankFixedIncomeLinks' + meta: + $ref: '#/components/schemas/BankFixedIncomesMeta' + additionalProperties: false + ResponseBankFixedIncomesProductIdentification: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/IdentifyProduct' + links: + $ref: '#/components/schemas/BankFixedIncomeLinks' + meta: + $ref: '#/components/schemas/BankFixedIncomesMeta' + additionalProperties: false + ResponseBankFixedIncomesBalances: + type: object + required: + - data + - links + - meta + properties: + data: + type: object + description: Lista de títulos de renda fixa bancária mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento + required: + - referenceDateTime + - quantity + - updatedUnitPrice + - grossAmount + - netAmount + - incomeTax + - financialTransactionTax + - blockedBalance + - purchaseUnitPrice + properties: + referenceDateTime: + type: string + format: date-time + description: 'data e hora da última posição consolidada disponível a que se referem os dados transacionais do cliente disponíveis nos canais eletrônicos; Na representação data deve se considerar os minutos e segundos como zero (00:00:00Z).' + pattern: '(^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$)' + example: '2022-07-21T17:32:00Z' + maxLength: 20 + quantity: + type: string + format: double + description: Quantidade de títulos detidos na data da posição do cliente + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.0004' + updatedUnitPrice: + type: object + required: + - amount + - currency + description: Valor bruto unitário atualizado na data de referência. + properties: + amount: + description: Valor relacionado ao objeto. + type: string + format: double + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.000004' + currency: + $ref: '#/components/schemas/BalanceCurrency' + grossAmount: + description: Valor do investimento que se refere a quantidade multiplicado pelo PU atualizado na data de referência; + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/BalanceAmount' + currency: + $ref: '#/components/schemas/BalanceCurrency' + netAmount: + description: 'Valor do investimento atualizado na data de referência, posterior a dedução de impostos (IOF e IR).' + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/BalanceAmount' + currency: + $ref: '#/components/schemas/BalanceCurrency' + incomeTax: + type: object + required: + - amount + - currency + description: Valor do imposto de renda provisionado considerando a alíquota vigente na data de referência. + properties: + amount: + $ref: '#/components/schemas/BalanceAmount' + currency: + $ref: '#/components/schemas/BalanceCurrency' + financialTransactionTax: + type: object + required: + - amount + - currency + description: Valor do imposto (IOF) provisionado considerando a alíquota vigente na data de referência. + properties: + amount: + $ref: '#/components/schemas/BalanceAmount' + currency: + $ref: '#/components/schemas/BalanceCurrency' + blockedBalance: + type: object + required: + - amount + - currency + description: Valor não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros). + properties: + amount: + $ref: '#/components/schemas/BalanceAmount' + currency: + $ref: '#/components/schemas/BalanceCurrency' + purchaseUnitPrice: + type: object + required: + - amount + - currency + description: Valor unitário negociado com o cliente na data de aquisição + properties: + amount: + description: Valor relacionado ao objeto. + type: string + format: double + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.000004' + currency: + $ref: '#/components/schemas/BalanceCurrency' + preFixedRate: + type: string + format: double + description: | + Taxa de remuneração acordada com o cliente na contratação. + Em casos de produtos progressivos, considerar taxa vigente. p.ex. 0.014500. + O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros(representação de porcentagem p.ex: 0.150000. + Este valor representa 15%. O valor 1 representa 100%). É esperado que o preenchimento deste campo pelas participantes seja enviado de acordo com o campo preFixedRate do endpoint /investment/{investmentId}. + pattern: '^\d{1}\.\d{6}$' + maxLength: 8 + minLength: 8 + example: '0.300000' + postFixedIndexerPercentage: + type: string + format: double + description: | + Percentual do indexador acordado com o cliente na contratação. + Em casos de produtos progressivos, considerar taxa vigente. p.ex. 0.014500. + O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros(representação de porcentagem p.ex: 0.150000. + Este valor representa 15%. O valor 1 representa 100%). É esperado que o preenchimento deste campo pelas participantes seja enviado de acordo com o campo postFixedIndexerPercentage do endpoint /investment/{investmentId}. + pattern: '^\d{1}\.\d{6}$' + maxLength: 8 + minLength: 8 + example: '1.000000' + links: + $ref: '#/components/schemas/BankFixedIncomeLinks' + meta: + $ref: '#/components/schemas/BankFixedIncomesMeta' + additionalProperties: false + ResponseBankFixedIncomesTransactions: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/BankFixedIncomesProductMovement' + links: + $ref: '#/components/schemas/BankFixedIncomeLinks' + meta: + $ref: '#/components/schemas/BankFixedIncomesTransactionsMeta' + additionalProperties: false + IdentifyProduct: + type: object + required: + - issuerInstitutionCnpjNumber + - investmentType + - remuneration + - issueUnitPrice + - dueDate + - issueDate + - purchaseDate + - gracePeriodDate + properties: + issuerInstitutionCnpjNumber: + type: string + description: CNPJ da instituição emissora. + maxLength: 14 + pattern: '^\d{14}$' + example: '11225860000140' + isinCode: + type: string + description: | + Código ISIN da emissão, Código ISIN do produto, Código da emissora (campo opcional): código universal que identifica cada valor mobiliário ou instrumento financeiro, conforme Norma ISO 6166 + maxLength: 12 + minLength: 12 + pattern: '^[A-Z]{2}([A-Z0-9]){9}\d{1}$' + example: BRCST4CTF001 + investmentType: + $ref: '#/components/schemas/EnumInvestmentType' + remuneration: + $ref: '#/components/schemas/Remuneration' + issueUnitPrice: + type: object + description: Preço unitário de emissão do título. + required: + - amount + - currency + properties: + amount: + type: string + format: double + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.000004' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/CurrencyCode' + dueDate: + type: string + format: date + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + description: Data de vencimento do título. + issueDate: + type: string + format: date + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-16' + description: Data de emissão do título. + clearingCode: + type: string + maxLength: 30 + pattern: '[\w\W-]*' + example: CDB421GPXXX + description: Código de registro do ativo na clearing. + purchaseDate: + type: string + format: date + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + description: Data de aquisição do cliente. + gracePeriodDate: + type: string + format: date + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-16' + description: Data até a qual o cliente não poderá resgatar antecipadamente seu investimento. + additionalProperties: false + EnumInvestmentType: + type: string + description: 'Especificação do ativo em questão (CDB, RDB, LCI ou LCA)' + enum: + - CDB + - RDB + - LCI + - LCA + example: CDB + EnumBankFixedIncomeIndexer: + type: string + description: 'Índice utilizado como referência para a correção da rentabilidade e/ou rendimentos do ativo (CDI, DI , TR, IPCA, IGP_M, IGP_DI, INPC, BCP, TLC, SELIC, PRE_FIXADO e OUTROS)' + enum: + - CDI + - DI + - TR + - IPCA + - IGP_M + - IGP_DI + - INPC + - BCP + - TLC + - SELIC + - PRE_FIXADO + - OUTROS + example: CDI + Remuneration: + type: object + description: Objeto para detalhamento de remuneração do titulo. + required: + - rateType + - ratePeriodicity + - calculation + - indexer + properties: + preFixedRate: + type: string + format: double + pattern: '^\d{1}\.\d{6}$' + maxLength: 8 + minLength: 8 + example: '0.300000' + description: | + Taxa de remuneração pré fixada de emissão do título. p.ex. 0.014500. + + O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros(representação de porcentagem p.ex: 0.150000. Este valor representa 15%. O valor 1 representa 100%). + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'PRE_FIXADO' no campo 'indexer' ou quando se tratar de produto com remuneração híbrida. + postFixedIndexerPercentage: + type: string + format: double + pattern: '^\d{1}\.\d{6}$' + maxLength: 8 + minLength: 8 + example: '1.100000' + description: | + Percentual do indexador pós fixado de emissão do título. p.ex. 0.014500. + + O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros(representação de porcentagem p.ex: 0.150000. Este valor representa 15%. O valor 1 representa 100%). + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido de forma diferente de 'PRE_FIXADO' ou quando se tratar de produto com remuneração híbrida. + rateType: + $ref: '#/components/schemas/EnumRateType' + ratePeriodicity: + $ref: '#/components/schemas/EnumRatePeriodicity' + calculation: + $ref: '#/components/schemas/EnumCalculation' + indexer: + $ref: '#/components/schemas/EnumBankFixedIncomeIndexer' + indexerAdditionalInfo: + type: string + description: | + Informações adicionais do indexador + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'Outros' no campo 'indexer'. + maxLength: 50 + example: Dólar + pattern: '[\w\W\s]*' + additionalProperties: false + EnumRateType: + type: string + description: | + "Tipo da taxa de remuneração (linear ou exponencial)" + enum: + - LINEAR + - EXPONENCIAL + example: LINEAR + EnumRatePeriodicity: + type: string + description: | + Periodicidade da taxa de remuneração (mensal, anual, diário, semestral) + enum: + - MENSAL + - ANUAL + - DIARIO + - SEMESTRAL + example: MENSAL + EnumCalculation: + type: string + description: | + "Base de cálculo (dias úteis ou dias corridos)" + enum: + - DIAS_UTEIS + - DIAS_CORRIDOS + example: DIAS_CORRIDOS + BankFixedIncomesMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + BankFixedIncomesTransactionsMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + BankFixedIncomeLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + BankFixedIncomesProductMovement: + type: object + required: + - type + - transactionType + - transactionDate + - transactionUnitPrice + - transactionQuantity + - transactionGrossValue + - transactionNetValue + - transactionId + properties: + type: + $ref: '#/components/schemas/EnumBankFixedIncomeMovementType' + transactionType: + $ref: '#/components/schemas/EnumBankFixedIncomeTransactionType' + transactionTypeAdditionalInfo: + type: string + maxLength: 100 + pattern: '[\w\W\s]*' + description: | + Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'Outros' no campo Motivo da movimentação. + transactionDate: + type: string + format: date + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + description: Data da movimentação. + transactionUnitPrice: + type: object + description: Preço unitário bruto negociado na transação. + required: + - amount + - currency + properties: + amount: + type: string + format: double + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.04' + currency: + $ref: '#/components/schemas/CurrencyCode' + transactionQuantity: + type: string + format: double + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.25' + description: Quantidade de títulos envolvidos na movimentação. + transactionGrossValue: + type: object + description: Valor bruto da transação (Preço unitário da movimentação x Quantidade). + required: + - amount + - currency + properties: + amount: + type: string + format: double + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + $ref: '#/components/schemas/CurrencyCode' + incomeTax: + type: object + description: | + Valor do imposto de renda recolhido na transação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + $ref: '#/components/schemas/CurrencyCode' + financialTransactionTax: + type: object + description: | + Valor do IOF recolhido na transação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/CurrencyCode' + transactionNetValue: + type: object + description: Valor líquido da transação. + required: + - amount + - currency + properties: + amount: + type: string + format: double + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/CurrencyCode' + remunerationTransactionRate: + type: string + format: double + maxLength: 8 + minLength: 3 + pattern: '^\d{1}\.\d{6}$' + example: '0.300000' + description: | + Taxa de remuneração da transação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. + indexerPercentage: + type: string + format: double + maxLength: 8 + minLength: 3 + pattern: '^\d{1}\.\d{6}$' + example: '1.100000' + description: | + Percentual máximo do indexador acordado com o cliente na contratação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. + transactionId: + type: string + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + description: Código ou identificador único prestado pela instituição que mantém a representação individual do movimento. + additionalProperties: false + EnumBankFixedIncomeMovementType: + type: string + description: | + Tipo de movimentação na visão de investimento + + - ENTRADA: APLICACAO, CANCELAMENTO, TRANSFERENCIA_TITULARIDADE, TRANSFERENCIA_CUSTODIA, OUTROS. + + - SAIDA: RESGATE, CANCELAMENTO, VENCIMENTO, PAGAMENTO_JUROS, AMORTIZACAO, TRANSFERENCIA_TITULARIDADE, TRANSFERENCIA_CUSTODIA, OUTROS. + + Por exemplo, para movimentação de CANCELAMENTO, tipicamente, será o type contrário ao evento originário. Ou seja, para cancelamento de APLICACAO, considera-se type SAIDA; para cancelamento de RESGATE, considera-se type ENTRADA. + enum: + - ENTRADA + - SAIDA + example: ENTRADA + EnumBankFixedIncomeTransactionType: + type: string + description: Aplicação, resgate, cancelamento, vencimento, pagamento de juros, amortização, transferência de titularidade, transferência de custódia e outros. Para movimentos de transferência (titularidade ou custódia) deve ser considerado o preço unitário (transactionUnitPrice) da aquisição do título. + enum: + - APLICACAO + - RESGATE + - CANCELAMENTO + - VENCIMENTO + - PAGAMENTO_JUROS + - AMORTIZACAO + - TRANSFERENCIA_TITULARIDADE + - TRANSFERENCIA_CUSTODIA + - OUTROS + example: APLICACAO + CurrencyCode: + type: string + pattern: '^[A-Z]{3}$' + maxLength: 3 + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + example: BRL + BalanceCurrency: + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + type: string + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + BalanceAmount: + description: Valor relacionado ao objeto. + type: string + format: double + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.0004' + securitySchemes: + OAuth2AuthorizationCode: + type: oauth2 + description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados. + flows: + authorizationCode: + authorizationUrl: 'https://authserver.example/authorization' + tokenUrl: 'https://authserver.example/token' + scopes: + bank-fixed-incomes: Escopo necessário para acesso à API Bank Fixed Incomes. O controle dos endpoints específicos é feito via permissions. + parameters: + InvestmentId: + name: investmentId + in: path + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + example: '92792126019929200000000000000000000000000' + Authorization: + name: Authorization + in: header + description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado + required: true + schema: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + pagination-key: + name: pagination-key + in: query + description: 'Identificador de rechamada, utilizado para evitar a contagem de chamadas ao endpoint durante a paginação.' + schema: + type: string + maxLength: 2048 + pattern: '[\w\W\s]*' + page: + name: page + in: query + description: Número da página que está sendo requisitada (o valor da primeira página é 1). + schema: + type: integer + default: 1 + minimum: 1 + maximum: 2147483647 + format: int32 + pageSize: + name: page-size + in: query + description: Quantidade total de registros por páginas. A transmissora deve considerar entrada como 25, caso seja informado algum valor menor pela receptora. Enquanto houver mais que 25 registros a enviar, a transmissora deve considerar o mínimo por página como 25. Somente a última página retornada (ou primeira, no caso de página única) pode conter menos de 25 registros. Mais informações, acesse Especificações de APIs > Padrões > Paginação. + schema: + type: integer + default: 25 + minimum: 25 + format: int32 + maximum: 1000 + xCustomerUserAgent: + name: x-customer-user-agent + in: header + description: Indica o user-agent que o usuário utiliza. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiAuthDate: + name: x-fapi-auth-date + in: header + description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a [RFC7231](https://tools.ietf.org/html/rfc7231).Exemplo: Sun, 10 Sep 2017 19:43:31 UTC' + required: false + schema: + type: string + pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$' + minLength: 29 + maxLength: 29 + xFapiCustomerIpAddress: + name: x-fapi-customer-ip-address + in: header + description: O endereço IP do usuário se estiver atualmente logado com o receptor. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiInteractionId: + name: x-fapi-interaction-id + in: header + description: Um UUID RFC4122 usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela receptora (client) e o seu valor deve ser "espelhado" pela transmissora (server) no cabeçalho de resposta. + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + fromTransactionDate: + name: fromTransactionDate + description: | + Data inicial de filtragem. + + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + fromTransactionDateMaxLimited: + name: fromTransactionDate + description: | + Data inicial de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + toTransactionDate: + name: toTransactionDate + description: | + Data final de filtragem. + + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + toTransactionDateMaxLimited: + name: toTransactionDate + description: | + Data final de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + responses: + OkResponseBankFixedIncomesBalances: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseBankFixedIncomesBalances' + OkResponseBankFixedIncomesProductList: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseBankFixedIncomesProductList' + ResponseBankFixedIncomeIdentifyProduct: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseBankFixedIncomesProductIdentification' + ResponseBankFixedIncomesProductMovement: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseBankFixedIncomesTransactions' + BadRequestWithAdditionalProperties: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + ForbiddenWithAdditionalProperties: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + GatewayTimeoutWithAdditionalProperties: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + InternalServerErrorWithAdditionalProperties: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + LockedWithAdditionalProperties: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + MethodNotAllowedWithAdditionalProperties: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotAcceptableWithAdditionalProperties: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotFoundWithAdditionalProperties: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + TooManyRequestsWithAdditionalProperties: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + UnauthorizedWithAdditionalProperties: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + UnprocessableEntityWithAdditionalProperties: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + DefaultWithAdditionalProperties: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + SiteIsOverloadedWithAdditionalProperties: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + TransactionsBadRequestWithAdditionalProperties: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsForbiddenWithAdditionalProperties: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsGatewayTimeoutWithAdditionalProperties: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsInternalServerErrorWithAdditionalProperties: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsLockedWithAdditionalProperties: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsMethodNotAllowedWithAdditionalProperties: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsNotAcceptableWithAdditionalProperties: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsNotFoundWithAdditionalProperties: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsTooManyRequestsWithAdditionalProperties: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsUnauthorizedWithAdditionalProperties: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsUnprocessableEntityWithAdditionalProperties: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsDefaultWithAdditionalProperties: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsSiteIsOverloadedWithAdditionalProperties: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' diff --git a/swagger-apis/bank-fixed-incomes/1.0.0.yml b/swagger-apis/bank-fixed-incomes/1.0.0.yml new file mode 100644 index 000000000..056b1dc94 --- /dev/null +++ b/swagger-apis/bank-fixed-incomes/1.0.0.yml @@ -0,0 +1,1458 @@ +openapi: 3.0.0 +info: + title: API Bank Fixed Incomes - Open Finance Brasil + description: | + API de informações de operações de Renda Fixa Bancária Open Finance Brasil (Fase 4). API que retorna informações de operações de investimento do tipo Renda Fixa Bancária (CDB/RDB, LCI e LCA) mantidas nas instituições transmissoras por seus clientes, incluindo dados como denominação do produto, rentabilidade, quantidade, prazos, saldos em posição do cliente e movimentações financeiras. Não possui segregação entre pessoa natural e pessoa jurídica. Requer consentimento do cliente para todos os endpoints. A exposição se dará por cada operação de renda fixa contratada pelo cliente. + version: 1.0.0 + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' + contact: + name: Governança do Open Finance Brasil – Especificações + email: gt-interfaces@openbankingbr.org + url: 'https://openbanking-brasil.github.io/areadesenvolvedor/' +servers: + - url: 'https://api.banco.com.br/open-banking/bank-fixed-incomes/v1' + description: Servidor de Produção + - url: 'https://apih.banco.com.br/open-banking/bank-fixed-incomes/v1' + description: Servidor de Homologação +tags: + - name: Product List + description: Obtém a lista de operações de Renda Fixa Bancária mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + - name: Product Identification + description: Obtém os dados da operação de Renda Fixa Bancária identificada por investmentId. + - name: Balances + description: Obtém a posição da operação de Renda Fixa Bancária identificada por investmentId. + - name: Transactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Bancária identificada por investmentId. + - name: Transactions Current + description: 'Obtém as movimentações recentes da operação de Renda Fixa Bancária identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' +paths: + /investments: + get: + tags: + - Product List + summary: Obtém a lista de operações de Renda Fixa Bancária mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + operationId: banktFixedIncomesGetInvestments + description: Obtém a lista de operações de Renda Fixa Bancária mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + parameters: + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + responses: + '200': + $ref: '#/components/responses/OkResponseBankFixedIncomesProductList' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - bank-fixed-incomes + '/investments/{investmentId}': + get: + tags: + - Product Identification + summary: Obtém os dados da operação de Renda Fixa Bancária identificada por investmentId. + operationId: banktFixedIncomesGetInvestmentsInvestmentId + description: Obtém os dados da operação de Renda Fixa Bancária identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseBankFixedIncomeIdentifyProduct' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - bank-fixed-incomes + '/investments/{investmentId}/balances': + get: + tags: + - Balances + summary: Obtém a posição da operação de Renda Fixa Bancária identificada por investmentId. + operationId: banktFixedIncomesGetInvestmentsInvestmentIdBalances + description: | + Obtém a posição da operação de Renda Fixa Bancária identificada por investmentId. + + Nos casos em que não houver posição para o investimento, ou seja, quantidade de ativos e valores monetários zerados, mas o mesmo ainda estiver no prazo de exposição (até 12 meses após a última movimentação), deve se retornar status code 200 e para o payload de retorno considerar os valores abaixo. Campos não obrigatórios não devem ser retornados: + + - Valores monetários: 0.00 + - Quantidade de ativos: 0.00 + - Data e hora da última posição: mesmo conteúdo do campo requestDateTime + parameters: + - name: investmentId + in: path + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/OkResponseBankFixedIncomesBalances' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - bank-fixed-incomes + '/investments/{investmentId}/transactions': + get: + tags: + - Transactions + summary: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Bancária identificada por investmentId. + operationId: banktFixedIncomesGetInvestmentsInvestmentIdTransactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Bancária identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDate' + - $ref: '#/components/parameters/toTransactionDate' + responses: + '200': + $ref: '#/components/responses/ResponseBankFixedIncomesProductMovement' + '400': + $ref: '#/components/responses/TransactionsBadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/TransactionsUnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/TransactionsForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/TransactionsNotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/TransactionsMethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/TransactionsNotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/TransactionsUnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/TransactionsLockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TransactionsTooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/TransactionsInternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/TransactionsGatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/TransactionsSiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/TransactionsDefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - bank-fixed-incomes + '/investments/{investmentId}/transactions-current': + get: + tags: + - Transactions Current + summary: 'Obtém as movimentações recentes da operação de Renda Fixa Bancária identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + operationId: banktFixedIncomesGetInvestmentsInvestmentIdTransactionsCurrent + description: 'Obtém as movimentações recentes da operação de Renda Fixa Bancária identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDateMaxLimited' + - $ref: '#/components/parameters/toTransactionDateMaxLimited' + responses: + '200': + $ref: '#/components/responses/ResponseBankFixedIncomesProductMovement' + '400': + $ref: '#/components/responses/TransactionsBadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/TransactionsUnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/TransactionsForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/TransactionsNotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/TransactionsMethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/TransactionsNotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/TransactionsUnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/TransactionsLockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TransactionsTooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/TransactionsInternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/TransactionsGatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/TransactionsSiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/TransactionsDefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - bank-fixed-incomes +components: + schemas: + ResponseError: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + additionalProperties: false + meta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + additionalProperties: false + ResponseErrorMetaSingle: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + ResponseBankFixedIncomesProductList: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + type: object + description: Lista de títulos de renda fixa bancária mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento + required: + - brandName + - companyCnpj + - investmentType + - investmentId + properties: + brandName: + type: string + description: 'Nome da Marca reportada pelo participante no Open Finance. Recomenda-se utilizar, sempre que possível, o mesmo nome de marca atribuído no campo do diretório Customer Friendly Server Name (Authorisation Server).' + pattern: '[\w\W\s]*' + example: Organização A + maxLength: 80 + companyCnpj: + type: string + description: 'Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. Deve-se ter apenas os números do CNPJ, sem máscara' + maxLength: 14 + pattern: '^\d{14}$' + example: '21281590001660' + investmentType: + $ref: '#/components/schemas/EnumInvestmentType' + investmentId: + type: string + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + additionalProperties: false + links: + $ref: '#/components/schemas/BankFixedIncomeProductListLinks' + meta: + $ref: '#/components/schemas/BankFixedIncomesMeta' + additionalProperties: false + ResponseBankFixedIncomesProductIdentification: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/IdentifyProduct' + links: + $ref: '#/components/schemas/BankFixedIncomeLinks' + meta: + $ref: '#/components/schemas/BankFixedIncomesMeta' + additionalProperties: false + ResponseBankFixedIncomesBalances: + type: object + required: + - data + - links + - meta + properties: + data: + type: object + description: Lista de títulos de renda fixa bancária mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento + required: + - referenceDateTime + - quantity + - updatedUnitPrice + - grossAmount + - netAmount + - incomeTax + - financialTransactionTax + - blockedBalance + - purchaseUnitPrice + properties: + referenceDateTime: + type: string + format: date-time + description: 'data e hora da última posição consolidada disponível a que se referem os dados transacionais do cliente disponíveis nos canais eletrônicos; Na representação data deve se considerar os minutos e segundos como zero (00:00:00Z).' + pattern: '(^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$)' + example: '2022-07-21T17:32:00Z' + maxLength: 20 + quantity: + type: string + format: double + description: Quantidade de títulos detidos na data da posição do cliente + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.0004' + updatedUnitPrice: + type: object + required: + - amount + - currency + description: Valor bruto unitário atualizado na data de referência. + properties: + amount: + description: Valor relacionado ao objeto. + type: string + format: double + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.000004' + currency: + $ref: '#/components/schemas/BalanceCurrency' + grossAmount: + description: Valor do investimento que se refere a quantidade multiplicado pelo PU atualizado na data de referência; + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/BalanceAmount' + currency: + $ref: '#/components/schemas/BalanceCurrency' + netAmount: + description: 'Valor do investimento atualizado na data de referência, posterior a dedução de impostos (IOF e IR).' + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/BalanceAmount' + currency: + $ref: '#/components/schemas/BalanceCurrency' + incomeTax: + type: object + required: + - amount + - currency + description: Valor do imposto de renda provisionado considerando a alíquota vigente na data de referência. + properties: + amount: + $ref: '#/components/schemas/BalanceAmount' + currency: + $ref: '#/components/schemas/BalanceCurrency' + financialTransactionTax: + type: object + required: + - amount + - currency + description: Valor do imposto (IOF) provisionado considerando a alíquota vigente na data de referência. + properties: + amount: + $ref: '#/components/schemas/BalanceAmount' + currency: + $ref: '#/components/schemas/BalanceCurrency' + blockedBalance: + type: object + required: + - amount + - currency + description: Valor não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros). Prazo de carência não é considerado como bloqueio. + properties: + amount: + $ref: '#/components/schemas/BalanceAmount' + currency: + $ref: '#/components/schemas/BalanceCurrency' + purchaseUnitPrice: + type: object + required: + - amount + - currency + description: Valor unitário negociado com o cliente na data de aquisição + properties: + amount: + description: Valor relacionado ao objeto. + type: string + format: double + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.000004' + currency: + $ref: '#/components/schemas/BalanceCurrency' + preFixedRate: + type: string + format: double + description: | + Taxa de remuneração acordada com o cliente na contratação. + Em casos de produtos progressivos, considerar taxa vigente. p.ex. 0.014500. + O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros(representação de porcentagem p.ex: 0.150000. + Este valor representa 15%. O valor 1 representa 100%). É esperado que o preenchimento deste campo pelas participantes seja enviado de acordo com o campo preFixedRate do endpoint /investment/{investmentId}. + pattern: '^\d{1}\.\d{6}$' + maxLength: 8 + minLength: 8 + example: '0.300000' + postFixedIndexerPercentage: + type: string + format: double + description: | + Percentual do indexador acordado com o cliente na contratação. + Em casos de produtos progressivos, considerar taxa vigente. p.ex. 0.014500. + O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros(representação de porcentagem p.ex: 0.150000. + Este valor representa 15%. O valor 1 representa 100%). É esperado que o preenchimento deste campo pelas participantes seja enviado de acordo com o campo postFixedIndexerPercentage do endpoint /investment/{investmentId}. + pattern: '^\d{1}\.\d{6}$' + maxLength: 8 + minLength: 8 + example: '1.000000' + links: + $ref: '#/components/schemas/BankFixedIncomeLinks' + meta: + $ref: '#/components/schemas/BankFixedIncomesMeta' + additionalProperties: false + ResponseBankFixedIncomesTransactions: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/BankFixedIncomesProductMovement' + links: + $ref: '#/components/schemas/BankFixedIncomeLinks' + meta: + $ref: '#/components/schemas/BankFixedIncomesTransactionsMeta' + additionalProperties: false + IdentifyProduct: + type: object + required: + - issuerInstitutionCnpjNumber + - investmentType + - remuneration + - issueUnitPrice + - dueDate + - issueDate + - purchaseDate + - gracePeriodDate + properties: + issuerInstitutionCnpjNumber: + type: string + description: CNPJ da instituição emissora. + maxLength: 14 + pattern: '^\d{14}$' + example: '11225860000140' + isinCode: + type: string + description: | + Código ISIN da emissão, Código ISIN do produto, Código da emissora (campo opcional): código universal que identifica cada valor mobiliário ou instrumento financeiro, conforme Norma ISO 6166 + maxLength: 12 + minLength: 12 + pattern: '^[A-Z]{2}([A-Z0-9]){9}\d{1}$' + example: BRCST4CTF001 + investmentType: + $ref: '#/components/schemas/EnumInvestmentType' + remuneration: + $ref: '#/components/schemas/Remuneration' + issueUnitPrice: + type: object + description: Preço unitário de emissão do título. + required: + - amount + - currency + properties: + amount: + type: string + format: double + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.000004' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/CurrencyCode' + dueDate: + type: string + format: date + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + description: Data de vencimento do título. + issueDate: + type: string + format: date + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-16' + description: Data de emissão do título. + clearingCode: + type: string + maxLength: 30 + pattern: '[\w\W-]*' + example: CDB421GPXXX + description: Código de registro do ativo na clearing. + purchaseDate: + type: string + format: date + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + description: Data de aquisição do cliente. + gracePeriodDate: + type: string + format: date + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-16' + description: Data até a qual o cliente não poderá resgatar antecipadamente seu investimento. + additionalProperties: false + EnumInvestmentType: + type: string + description: 'Especificação do ativo em questão (CDB, RDB, LCI ou LCA)' + enum: + - CDB + - RDB + - LCI + - LCA + example: CDB + EnumBankFixedIncomeIndexer: + type: string + description: 'Índice utilizado como referência para a correção da rentabilidade e/ou rendimentos do ativo (CDI, DI , TR, IPCA, IGP_M, IGP_DI, INPC, BCP, TLC, SELIC, PRE_FIXADO e OUTROS)' + enum: + - CDI + - DI + - TR + - IPCA + - IGP_M + - IGP_DI + - INPC + - BCP + - TLC + - SELIC + - PRE_FIXADO + - OUTROS + example: CDI + Remuneration: + type: object + description: Objeto para detalhamento de remuneração do titulo. + required: + - rateType + - ratePeriodicity + - calculation + - indexer + properties: + preFixedRate: + type: string + format: double + pattern: '^\d{1}\.\d{6}$' + maxLength: 8 + minLength: 8 + example: '0.300000' + description: | + Taxa de remuneração pré fixada de emissão do título. p.ex. 0.014500. + + O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros(representação de porcentagem p.ex: 0.150000. Este valor representa 15%. O valor 1 representa 100%). + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'PRE_FIXADO' no campo 'indexer' ou quando se tratar de produto com remuneração híbrida. + postFixedIndexerPercentage: + type: string + format: double + pattern: '^\d{1}\.\d{6}$' + maxLength: 8 + minLength: 8 + example: '1.100000' + description: | + Percentual do indexador pós fixado de emissão do título. p.ex. 0.014500. + + O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros(representação de porcentagem p.ex: 0.150000. Este valor representa 15%. O valor 1 representa 100%). + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido de forma diferente de 'PRE_FIXADO' ou quando se tratar de produto com remuneração híbrida. + rateType: + $ref: '#/components/schemas/EnumRateType' + ratePeriodicity: + $ref: '#/components/schemas/EnumRatePeriodicity' + calculation: + $ref: '#/components/schemas/EnumCalculation' + indexer: + $ref: '#/components/schemas/EnumBankFixedIncomeIndexer' + indexerAdditionalInfo: + type: string + description: | + Informações adicionais do indexador + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'Outros' no campo 'indexer'. + maxLength: 50 + example: Dólar + pattern: '[\w\W\s]*' + additionalProperties: false + EnumRateType: + type: string + description: | + "Tipo da taxa de remuneração (linear ou exponencial)" + enum: + - LINEAR + - EXPONENCIAL + example: LINEAR + EnumRatePeriodicity: + type: string + description: | + Periodicidade da taxa de remuneração (mensal, anual, diário, semestral) + enum: + - MENSAL + - ANUAL + - DIARIO + - SEMESTRAL + example: MENSAL + EnumCalculation: + type: string + description: | + "Base de cálculo (dias úteis ou dias corridos)" + enum: + - DIAS_UTEIS + - DIAS_CORRIDOS + example: DIAS_CORRIDOS + BankFixedIncomesMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + BankFixedIncomesTransactionsMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + BankFixedIncomeProductListLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + last: + type: string + format: uri + maxLength: 2000 + description: URI da última página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%.\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%\+.~#?&\/\/=]*)$' + BankFixedIncomeLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + BankFixedIncomesProductMovement: + type: object + required: + - type + - transactionType + - transactionDate + - transactionUnitPrice + - transactionQuantity + - transactionGrossValue + - transactionNetValue + - transactionId + properties: + type: + $ref: '#/components/schemas/EnumBankFixedIncomeMovementType' + transactionType: + $ref: '#/components/schemas/EnumBankFixedIncomeTransactionType' + transactionTypeAdditionalInfo: + type: string + maxLength: 100 + pattern: '[\w\W\s]*' + description: | + Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'Outros' no campo Motivo da movimentação. + transactionDate: + type: string + format: date + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + description: Data da movimentação. + transactionUnitPrice: + type: object + description: Preço unitário bruto negociado na transação. + required: + - amount + - currency + properties: + amount: + type: string + format: double + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.04' + currency: + $ref: '#/components/schemas/CurrencyCode' + transactionQuantity: + type: string + format: double + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.25' + description: Quantidade de títulos envolvidos na movimentação. + transactionGrossValue: + type: object + description: Valor bruto da transação (Preço unitário da movimentação x Quantidade). + required: + - amount + - currency + properties: + amount: + type: string + format: double + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + $ref: '#/components/schemas/CurrencyCode' + incomeTax: + type: object + description: | + Valor do imposto de renda recolhido na transação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + $ref: '#/components/schemas/CurrencyCode' + financialTransactionTax: + type: object + description: | + Valor do IOF recolhido na transação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/CurrencyCode' + transactionNetValue: + type: object + description: Valor líquido da transação. + required: + - amount + - currency + properties: + amount: + type: string + format: double + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/CurrencyCode' + remunerationTransactionRate: + type: string + format: double + maxLength: 8 + minLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '0.300000' + description: | + Taxa de remuneração da transação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. + indexerPercentage: + type: string + format: double + maxLength: 8 + minLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '1.100000' + description: | + Percentual máximo do indexador acordado com o cliente na contratação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. + transactionId: + type: string + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + description: Código ou identificador único prestado pela instituição que mantém a representação individual do movimento. + additionalProperties: false + EnumBankFixedIncomeMovementType: + type: string + description: | + Tipo de movimentação na visão de investimento + + - ENTRADA: APLICACAO, CANCELAMENTO, TRANSFERENCIA_TITULARIDADE, TRANSFERENCIA_CUSTODIA, OUTROS. + + - SAIDA: RESGATE, CANCELAMENTO, VENCIMENTO, PAGAMENTO_JUROS, AMORTIZACAO, TRANSFERENCIA_TITULARIDADE, TRANSFERENCIA_CUSTODIA, OUTROS. + + Por exemplo, para movimentação de CANCELAMENTO, tipicamente, será o type contrário ao evento originário. Ou seja, para cancelamento de APLICACAO, considera-se type SAIDA; para cancelamento de RESGATE, considera-se type ENTRADA. + enum: + - ENTRADA + - SAIDA + example: ENTRADA + EnumBankFixedIncomeTransactionType: + type: string + description: Aplicação, resgate, cancelamento, vencimento, pagamento de juros, amortização, transferência de titularidade, transferência de custódia e outros. Para movimentos de transferência (titularidade ou custódia) deve ser considerado o preço unitário (transactionUnitPrice) da aquisição do título. + enum: + - APLICACAO + - RESGATE + - CANCELAMENTO + - VENCIMENTO + - PAGAMENTO_JUROS + - AMORTIZACAO + - TRANSFERENCIA_TITULARIDADE + - TRANSFERENCIA_CUSTODIA + - OUTROS + example: APLICACAO + CurrencyCode: + type: string + pattern: '^[A-Z]{3}$' + maxLength: 3 + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + example: BRL + BalanceCurrency: + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + type: string + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + BalanceAmount: + description: Valor relacionado ao objeto. + type: string + format: double + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.0004' + securitySchemes: + OAuth2AuthorizationCode: + type: oauth2 + description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados. + flows: + authorizationCode: + authorizationUrl: 'https://authserver.example/authorization' + tokenUrl: 'https://authserver.example/token' + scopes: + bank-fixed-incomes: Escopo necessário para acesso à API Bank Fixed Incomes. O controle dos endpoints específicos é feito via permissions. + parameters: + InvestmentId: + name: investmentId + in: path + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + example: '92792126019929200000000000000000000000000' + Authorization: + name: Authorization + in: header + description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado + required: true + schema: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + pagination-key: + name: pagination-key + in: query + description: 'Identificador de rechamada, utilizado para evitar a contagem de chamadas ao endpoint durante a paginação.' + schema: + type: string + maxLength: 2048 + pattern: '[\w\W\s]*' + page: + name: page + in: query + description: Número da página que está sendo requisitada (o valor da primeira página é 1). + schema: + type: integer + default: 1 + minimum: 1 + maximum: 2147483647 + format: int32 + pageSize: + name: page-size + in: query + description: Quantidade total de registros por páginas. A transmissora deve considerar entrada como 25, caso seja informado algum valor menor pela receptora. Enquanto houver mais que 25 registros a enviar, a transmissora deve considerar o mínimo por página como 25. Somente a última página retornada (ou primeira, no caso de página única) pode conter menos de 25 registros. Mais informações, acesse Especificações de APIs > Padrões > Paginação. + schema: + type: integer + default: 25 + minimum: 25 + format: int32 + maximum: 1000 + xCustomerUserAgent: + name: x-customer-user-agent + in: header + description: Indica o user-agent que o usuário utiliza. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiAuthDate: + name: x-fapi-auth-date + in: header + description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a [RFC7231](https://tools.ietf.org/html/rfc7231).Exemplo: Sun, 10 Sep 2017 19:43:31 UTC' + required: false + schema: + type: string + pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$' + minLength: 29 + maxLength: 29 + xFapiCustomerIpAddress: + name: x-fapi-customer-ip-address + in: header + description: O endereço IP do usuário se estiver atualmente logado com o receptor. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiInteractionId: + name: x-fapi-interaction-id + in: header + description: Um UUID RFC4122 usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela receptora (client) e o seu valor deve ser "espelhado" pela transmissora (server) no cabeçalho de resposta. + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + fromTransactionDate: + name: fromTransactionDate + description: | + Data inicial de filtragem. + + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + fromTransactionDateMaxLimited: + name: fromTransactionDate + description: | + Data inicial de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + toTransactionDate: + name: toTransactionDate + description: | + Data final de filtragem. + + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + toTransactionDateMaxLimited: + name: toTransactionDate + description: | + Data final de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + responses: + OkResponseBankFixedIncomesBalances: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseBankFixedIncomesBalances' + OkResponseBankFixedIncomesProductList: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseBankFixedIncomesProductList' + ResponseBankFixedIncomeIdentifyProduct: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseBankFixedIncomesProductIdentification' + ResponseBankFixedIncomesProductMovement: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseBankFixedIncomesTransactions' + BadRequestWithAdditionalProperties: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + ForbiddenWithAdditionalProperties: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + GatewayTimeoutWithAdditionalProperties: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + InternalServerErrorWithAdditionalProperties: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + LockedWithAdditionalProperties: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + MethodNotAllowedWithAdditionalProperties: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotAcceptableWithAdditionalProperties: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotFoundWithAdditionalProperties: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + TooManyRequestsWithAdditionalProperties: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + UnauthorizedWithAdditionalProperties: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + UnprocessableEntityWithAdditionalProperties: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + DefaultWithAdditionalProperties: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + SiteIsOverloadedWithAdditionalProperties: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + TransactionsBadRequestWithAdditionalProperties: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsForbiddenWithAdditionalProperties: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsGatewayTimeoutWithAdditionalProperties: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsInternalServerErrorWithAdditionalProperties: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsLockedWithAdditionalProperties: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsMethodNotAllowedWithAdditionalProperties: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsNotAcceptableWithAdditionalProperties: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsNotFoundWithAdditionalProperties: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsTooManyRequestsWithAdditionalProperties: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsUnauthorizedWithAdditionalProperties: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsUnprocessableEntityWithAdditionalProperties: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsDefaultWithAdditionalProperties: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TransactionsSiteIsOverloadedWithAdditionalProperties: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' diff --git a/swagger-apis/bank-fixed-incomes/index.html b/swagger-apis/bank-fixed-incomes/index.html index 00bbf6e2f..e5a2fecea 100644 --- a/swagger-apis/bank-fixed-incomes/index.html +++ b/swagger-apis/bank-fixed-incomes/index.html @@ -45,8 +45,11 @@ window.onload = function() { // Begin Swagger UI call region const ui = SwaggerUIBundle({ - urls: [ {"name": "1.0.0-rc1.0", "url": "./1.0.0-rc1.0.yml"}], - "urls.primaryName": "1.0.0-rc1.0", // default spec + urls: [ {"name": "1.0.0-rc1.0", "url": "./1.0.0-rc1.0.yml"}, + {"name": "1.0.0-rc2.0", "url": "./1.0.0-rc2.0.yml"}, + {"name": "1.0.0-rc3.0", "url": "./1.0.0-rc3.0.yml"}, + {"name": "1.0.0", "url": "./1.0.0.yml"}], + "urls.primaryName": "1.0.0", // default spec dom_id: '#swagger-ui', deepLinking: true, supportedSubmitMethods:[], diff --git a/swagger-apis/consents/2.1.0-rc2.0.yml b/swagger-apis/consents/2.1.0-rc2.0.yml new file mode 100644 index 000000000..414597cb5 --- /dev/null +++ b/swagger-apis/consents/2.1.0-rc2.0.yml @@ -0,0 +1,1032 @@ +openapi: 3.0.0 +info: + title: API Consents - Open Finance Brasil + description: | + API que trata da criação, consulta e revogação de consentimentos para o Open Finance Brasil Dados cadastrais e transacionais - customer-data. + Não possui segregação entre pessoa natural e pessoa jurídica. + + # Orientações importantes + A API Consents trata dos consentimentos exclusivamente para a Dados cadastrais e transacionais do Open Finance Brasil. + - As informações da instituição receptora não trafegam na API Consents – a autenticação da receptora se dá através do [DCR](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/17378307/Dynamic+Client+Registration). + - Na chamada para a criação do consentimento deve-se utilizar um token gerado via `client_credentials`. + - Após o `POST` de criação do consentimento, o `STATUS` devolvido na resposta deverá ser `AWAITING_AUTHORISATION`. + - O `STATUS` será alterado para `AUTHORISED` somente após autenticação e confirmação por parte do usuário na instituição transmissora dos dados. + - Alteração obrigatória do status `AWAITING_AUTHORISATION` para `REVOKED` após 60 minutos. + - Todas as datas trafegadas nesta API seguem o padrão da [RFC3339](https://tools.ietf.org/html/rfc3339) e formato "zulu". + - A descrição do fluxo de consentimento encontra-se disponível no [Portal do desenvolvedor](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/17369300/Dados+Cadastrais+e+Transacionais#Fluxo-b%C3%A1sico-de-consentimento). + - O arquivo com o mapeamento completo entre `Roles`, `scopes` e `permissions` está disponibilizado no Portal do desenvolvedor, no mesmo item acima - descrição do fluxo de consentimento. + - A receptora deve enviar obrigatoriamente, no pedido de criação de consentimento, todas as permissions dos agrupamentos de dados as quais ela deseja consentimento, conforme tabela abaixo: + + ``` + |----------------------|-------------------------------|----------------------------------------------------------| + | CATEGORIA DE DADOS | AGRUPAMENTO | PERMISSIONS | + |----------------------|-------------------------------|----------------------------------------------------------| + | Cadastro | Dados Cadastrais PF | CUSTOMERS_PERSONAL_IDENTIFICATIONS_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Cadastro | Informações complementares PF | CUSTOMERS_PERSONAL_ADITTIONALINFO_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Cadastro | Dados Cadastrais PJ | CUSTOMERS_BUSINESS_IDENTIFICATIONS_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Cadastro | Informações complementares PJ | CUSTOMERS_BUSINESS_ADITTIONALINFO_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Contas | Saldos | ACCOUNTS_READ | + | | | ACCOUNTS_BALANCES_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Contas | Limites | ACCOUNTS_READ | + | | | ACCOUNTS_OVERDRAFT_LIMITS_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Contas | Extratos | ACCOUNTS_READ | + | | | ACCOUNTS_TRANSACTIONS_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Cartão de Crédito | Limites | CREDIT_CARDS_ACCOUNTS_READ | + | | | CREDIT_CARDS_ACCOUNTS_LIMITS_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Cartão de Crédito | Transações | CREDIT_CARDS_ACCOUNTS_READ | + | | | CREDIT_CARDS_ACCOUNTS_TRANSACTIONS_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Cartão de Crédito | Faturas | CREDIT_CARDS_ACCOUNTS_READ | + | | | CREDIT_CARDS_ACCOUNTS_BILLS_READ | + | | | CREDIT_CARDS_ACCOUNTS_BILLS_TRANSACTIONS_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Operações de Crédito | Dados do Contrato | LOANS_READ | + | | | LOANS_WARRANTIES_READ | + | | | LOANS_SCHEDULED_INSTALMENTS_READ | + | | | LOANS_PAYMENTS_READ | + | | | FINANCINGS_READ | + | | | FINANCINGS_WARRANTIES_READ | + | | | FINANCINGS_SCHEDULED_INSTALMENTS_READ | + | | | FINANCINGS_PAYMENTS_READ | + | | | UNARRANGED_ACCOUNTS_OVERDRAFT_READ | + | | | UNARRANGED_ACCOUNTS_OVERDRAFT_WARRANTIES_READ | + | | | UNARRANGED_ACCOUNTS_OVERDRAFT_SCHEDULED_INSTALMENTS_READ | + | | | UNARRANGED_ACCOUNTS_OVERDRAFT_PAYMENTS_READ | + | | | INVOICE_FINANCINGS_READ | + | | | INVOICE_FINANCINGS_WARRANTIES_READ | + | | | INVOICE_FINANCINGS_SCHEDULED_INSTALMENTS_READ | + | | | INVOICE_FINANCINGS_PAYMENTS_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Investimento | Dados da Operação | BANK_FIXED_INCOMES_READ | + | | | CREDIT_FIXED_INCOMES_READ | + | | | FUNDS_READ | + | | | VARIABLE_INCOMES_READ | + | | | TREASURE_TITLES_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + ``` + - A instituição transmissora deve validar o preenchimento correto desses agrupamentos no momento da geração do consentimento. + - Caso a instiuição receptora envie permissões divergentes ao agrupamento especificado na tabela, a transmissora deve rejeitar o pedido da receptora dando retorno HTTP Status Code 400. + - A transmissora deve retornar, da lista de permissions requisitadas, apenas o subconjunto de permissions por ela suportada, removendo da lista as permissions de produtos não suportados e retornando HTTP Status Code 201. Caso não restem permissões funcionais, a instituição transmissora deve retornar o erro HTTP Code "422 Unprocessable Entity". + version: 2.1.0-rc2.0 + license: + name: Apache 2.0 + url: 'http://www.apache.org/licenses/LICENSE-2.0' + contact: + name: Governança do Open Finance Brasil - Especificações + email: gt-interfaces@openbankingbr.org + url: 'https://openbanking-brasil.github.io/areadesenvolvedor/' +servers: + - url: 'https://api.banco.com.br/open-banking/consents/v2' + description: Servidor de Produção + - url: 'https://apih.banco.com.br/open-banking/consents/v2' + description: Servidor de Homologação +tags: + - name: Consents + description: 'Operações para criação, consulta e revogação do consentimento dado pelo cliente.' +paths: + /consents: + post: + tags: + - Consents + summary: Criar novo pedido de consentimento. + operationId: consentsPostConsents + description: Método para a criação de um novo consentimento. + parameters: + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateConsent' + description: Payload para criação do consentimento. + required: true + responses: + '201': + $ref: '#/components/responses/201ConsentsCreated' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + description: Erro inesperado. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + security: + - OAuth2Security: + - consents + '/consents/{consentId}': + get: + tags: + - Consents + summary: Obter detalhes do consentimento identificado por consentId. + operationId: consentsGetConsentsConsentId + description: Método para obter detalhes do consentimento identificado por consentId. + parameters: + - $ref: '#/components/parameters/consentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/200ConsentsConsentIdRead' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + description: Erro inesperado. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + security: + - OAuth2Security: + - consents + delete: + tags: + - Consents + summary: Deletar / Revogar o consentimento identificado por consentId. + operationId: consentsDeleteConsentsConsentId + description: Método para deletar / revogar o consentimento identificado por consentId. + parameters: + - $ref: '#/components/parameters/consentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '204': + $ref: '#/components/responses/204ConsentsConsentIdDeleted' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + description: Erro inesperado. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + security: + - OAuth2Security: + - consents +components: + schemas: + Links: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + last: + type: string + format: uri + maxLength: 2000 + description: URI da última página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + Meta: + type: object + description: Meta informações referente à API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + CreateConsent: + type: object + required: + - data + properties: + data: + type: object + required: + - permissions + - loggedUser + - expirationDateTime + properties: + loggedUser: + $ref: '#/components/schemas/LoggedUser' + businessEntity: + $ref: '#/components/schemas/BusinessEntity' + permissions: + type: array + items: + description: 'Especifica os tipos de permissões de acesso às APIs no escopo do Open Finance Brasil - Dados cadastrais e transacionais, de acordo com os blocos de consentimento fornecidos pelo usuário e necessários ao acesso a cada endpoint das APIs. Esse array não deve ter duplicidade de itens.' + type: string + enum: + - ACCOUNTS_READ + - ACCOUNTS_BALANCES_READ + - ACCOUNTS_TRANSACTIONS_READ + - ACCOUNTS_OVERDRAFT_LIMITS_READ + - CREDIT_CARDS_ACCOUNTS_READ + - CREDIT_CARDS_ACCOUNTS_BILLS_READ + - CREDIT_CARDS_ACCOUNTS_BILLS_TRANSACTIONS_READ + - CREDIT_CARDS_ACCOUNTS_LIMITS_READ + - CREDIT_CARDS_ACCOUNTS_TRANSACTIONS_READ + - CUSTOMERS_PERSONAL_IDENTIFICATIONS_READ + - CUSTOMERS_PERSONAL_ADITTIONALINFO_READ + - CUSTOMERS_BUSINESS_IDENTIFICATIONS_READ + - CUSTOMERS_BUSINESS_ADITTIONALINFO_READ + - FINANCINGS_READ + - FINANCINGS_SCHEDULED_INSTALMENTS_READ + - FINANCINGS_PAYMENTS_READ + - FINANCINGS_WARRANTIES_READ + - INVOICE_FINANCINGS_READ + - INVOICE_FINANCINGS_SCHEDULED_INSTALMENTS_READ + - INVOICE_FINANCINGS_PAYMENTS_READ + - INVOICE_FINANCINGS_WARRANTIES_READ + - LOANS_READ + - LOANS_SCHEDULED_INSTALMENTS_READ + - LOANS_PAYMENTS_READ + - LOANS_WARRANTIES_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_SCHEDULED_INSTALMENTS_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_PAYMENTS_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_WARRANTIES_READ + - RESOURCES_READ + - BANK_FIXED_INCOMES_READ + - CREDIT_FIXED_INCOMES_READ + - FUNDS_READ + - VARIABLE_INCOMES_READ + - TREASURE_TITLES_READ + minItems: 1 + example: + - ACCOUNTS_READ + - ACCOUNTS_OVERDRAFT_LIMITS_READ + - RESOURCES_READ + expirationDateTime: + description: 'Data e hora de expiração da permissão. De preenchimento obrigatório, reflete a data limite de validade do consentimento. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + EnumRejectedBy: + type: string + description: | + Informar usuário responsável pela rejeição. + 1. USER usuário + 2. ASPSP instituição transmissora + 3. TPP instituição receptora + enum: + - USER + - ASPSP + - TPP + example: USER + EnumReasonCode: + type: string + description: | + Define o código da razão pela qual o consentimento foi rejeitado. + + - CONSENT_EXPIRED – consentimento que ultrapassou o tempo limite para autorização. + - CUSTOMER_MANUALLY_REJECTED – cliente efetuou a rejeição do consentimento manualmente através de interação nas instituições participantes. + - CUSTOMER_MANUALLY_REVOKED – cliente efetuou a revogação após a autorização do consentimento. + - CONSENT_MAX_DATE_REACHED – consentimento que ultrapassou o tempo limite de compartilhamento. + - CONSENT_TECHNICAL_ISSUE – consentimento que foi rejeitado devido a um problema técnico que impossibilita seu uso pela instituição receptora, por exemplo: falha associada a troca do AuthCode pelo AccessToken, durante o processo de Hybid Flow. + - INTERNAL_SECURITY_REASON – consentimento que foi rejeitado devido as políticas de segurança aplicada pela instituição transmissora. + enum: + - CONSENT_EXPIRED + - CUSTOMER_MANUALLY_REJECTED + - CUSTOMER_MANUALLY_REVOKED + - CONSENT_MAX_DATE_REACHED + - CONSENT_TECHNICAL_ISSUE + - INTERNAL_SECURITY_REASON + example: CONSENT_EXPIRED + RejectedReason: + type: object + description: Define a razão pela qual o consentimento foi rejeitado. + required: + - code + properties: + code: + $ref: '#/components/schemas/EnumReasonCode' + additionalInformation: + type: string + description: Contém informações adicionais a critério da transmissora. + maxLength: 140 + pattern: '[\w\W\s]*' + example: Tempo de confirmação da múltipla alçada excedido. + ResponseConsent: + type: object + required: + - data + properties: + data: + type: object + required: + - consentId + - creationDateTime + - status + - statusUpdateDateTime + - permissions + - expirationDateTime + properties: + consentId: + description: | + O consentId é o identificador único do consentimento e deverá ser um URN - Uniform Resource Name. + Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource + Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN + seja um identificador de recurso persistente e independente da localização. + Considerando a string urn:bancoex:C1DD33123 como exemplo para consentId temos: + - o namespace(urn) + - o identificador associado ao namespace da instituição transnmissora (bancoex) + - o identificador específico dentro do namespace (C1DD33123). + Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141). + type: string + pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$' + maxLength: 256 + example: 'urn:bancoex:C1DD33123' + creationDateTime: + description: 'Data e hora em que o recurso foi criado. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).' + type: string + format: date-time + example: '2021-05-21T08:30:00Z' + maxLength: 20 + status: + description: Estado atual do consentimento cadastrado. + type: string + enum: + - AUTHORISED + - AWAITING_AUTHORISATION + - REJECTED + example: AWAITING_AUTHORISATION + statusUpdateDateTime: + description: 'Data e hora em que o recurso foi atualizado. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).' + type: string + format: date-time + example: '2021-05-21T08:30:00Z' + maxLength: 20 + permissions: + type: array + minItems: 1 + description: 'Especifica os tipos de permissões de acesso às APIs no escopo do Open Finance Brasil - Dados cadastrais e transacionais, de acordo com os blocos de consentimento fornecidos pelo usuário e necessários ao acesso a cada endpoint das APIs. Esse array não deve ter duplicidade de itens.' + items: + type: string + enum: + - ACCOUNTS_READ + - ACCOUNTS_BALANCES_READ + - ACCOUNTS_TRANSACTIONS_READ + - ACCOUNTS_OVERDRAFT_LIMITS_READ + - CREDIT_CARDS_ACCOUNTS_READ + - CREDIT_CARDS_ACCOUNTS_BILLS_READ + - CREDIT_CARDS_ACCOUNTS_BILLS_TRANSACTIONS_READ + - CREDIT_CARDS_ACCOUNTS_LIMITS_READ + - CREDIT_CARDS_ACCOUNTS_TRANSACTIONS_READ + - CUSTOMERS_PERSONAL_IDENTIFICATIONS_READ + - CUSTOMERS_PERSONAL_ADITTIONALINFO_READ + - CUSTOMERS_BUSINESS_IDENTIFICATIONS_READ + - CUSTOMERS_BUSINESS_ADITTIONALINFO_READ + - FINANCINGS_READ + - FINANCINGS_SCHEDULED_INSTALMENTS_READ + - FINANCINGS_PAYMENTS_READ + - FINANCINGS_WARRANTIES_READ + - INVOICE_FINANCINGS_READ + - INVOICE_FINANCINGS_SCHEDULED_INSTALMENTS_READ + - INVOICE_FINANCINGS_PAYMENTS_READ + - INVOICE_FINANCINGS_WARRANTIES_READ + - LOANS_READ + - LOANS_SCHEDULED_INSTALMENTS_READ + - LOANS_PAYMENTS_READ + - LOANS_WARRANTIES_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_SCHEDULED_INSTALMENTS_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_PAYMENTS_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_WARRANTIES_READ + - RESOURCES_READ + - BANK_FIXED_INCOMES_READ + - CREDIT_FIXED_INCOMES_READ + - FUNDS_READ + - VARIABLE_INCOMES_READ + - TREASURE_TITLES_READ + example: + - ACCOUNTS_READ + - ACCOUNTS_OVERDRAFT_LIMITS_READ + - RESOURCES_READ + expirationDateTime: + description: 'Data e hora de expiração da permissão. De preenchimento obrigatório, reflete a data limite de validade do consentimento. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).' + type: string + format: date-time + example: '2021-05-21T08:30:00Z' + maxLength: 20 + links: + $ref: '#/components/schemas/Links' + meta: + $ref: '#/components/schemas/Meta' + ResponseConsentRead: + type: object + required: + - data + properties: + data: + type: object + required: + - consentId + - creationDateTime + - status + - statusUpdateDateTime + - permissions + - expirationDateTime + properties: + consentId: + description: | + O consentId é o identificador único do consentimento e deverá ser um URN - Uniform Resource Name. + Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource + Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN + seja um identificador de recurso persistente e independente da localização. + Considerando a string urn:bancoex:C1DD33123 como exemplo para consentId temos: + - o namespace(urn) + - o identificador associado ao namespace da instituição transnmissora (bancoex) + - o identificador específico dentro do namespace (C1DD33123). + Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141). + type: string + pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$' + maxLength: 256 + example: 'urn:bancoex:C1DD33123' + creationDateTime: + description: 'Data e hora em que o recurso foi criado. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).' + type: string + format: date-time + example: '2021-05-21T08:30:00Z' + maxLength: 20 + status: + description: Estado atual do consentimento cadastrado. + type: string + enum: + - AUTHORISED + - AWAITING_AUTHORISATION + - REJECTED + example: AWAITING_AUTHORISATION + statusUpdateDateTime: + description: 'Data e hora em que o recurso foi atualizado. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).' + type: string + format: date-time + example: '2021-05-21T08:30:00Z' + maxLength: 20 + permissions: + type: array + minItems: 1 + description: 'Especifica os tipos de permissões de acesso às APIs no escopo do Open Finance Brasil - Dados cadastrais e transacionais, de acordo com os blocos de consentimento fornecidos pelo usuário e necessários ao acesso a cada endpoint das APIs. Esse array não deve ter duplicidade de itens.' + items: + type: string + enum: + - ACCOUNTS_READ + - ACCOUNTS_BALANCES_READ + - ACCOUNTS_TRANSACTIONS_READ + - ACCOUNTS_OVERDRAFT_LIMITS_READ + - CREDIT_CARDS_ACCOUNTS_READ + - CREDIT_CARDS_ACCOUNTS_BILLS_READ + - CREDIT_CARDS_ACCOUNTS_BILLS_TRANSACTIONS_READ + - CREDIT_CARDS_ACCOUNTS_LIMITS_READ + - CREDIT_CARDS_ACCOUNTS_TRANSACTIONS_READ + - CUSTOMERS_PERSONAL_IDENTIFICATIONS_READ + - CUSTOMERS_PERSONAL_ADITTIONALINFO_READ + - CUSTOMERS_BUSINESS_IDENTIFICATIONS_READ + - CUSTOMERS_BUSINESS_ADITTIONALINFO_READ + - FINANCINGS_READ + - FINANCINGS_SCHEDULED_INSTALMENTS_READ + - FINANCINGS_PAYMENTS_READ + - FINANCINGS_WARRANTIES_READ + - INVOICE_FINANCINGS_READ + - INVOICE_FINANCINGS_SCHEDULED_INSTALMENTS_READ + - INVOICE_FINANCINGS_PAYMENTS_READ + - INVOICE_FINANCINGS_WARRANTIES_READ + - LOANS_READ + - LOANS_SCHEDULED_INSTALMENTS_READ + - LOANS_PAYMENTS_READ + - LOANS_WARRANTIES_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_SCHEDULED_INSTALMENTS_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_PAYMENTS_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_WARRANTIES_READ + - RESOURCES_READ + - BANK_FIXED_INCOMES_READ + - CREDIT_FIXED_INCOMES_READ + - FUNDS_READ + - VARIABLE_INCOMES_READ + - TREASURE_TITLES_READ + example: + - ACCOUNTS_READ + - ACCOUNTS_OVERDRAFT_LIMITS_READ + - RESOURCES_READ + expirationDateTime: + description: 'Data e hora de expiração da permissão. De preenchimento obrigatório, reflete a data limite de validade do consentimento. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).' + type: string + format: date-time + example: '2021-05-21T08:30:00Z' + maxLength: 20 + rejection: + type: object + description: Objeto a ser retornado caso o consentimento seja rejeitado. + required: + - rejectedBy + - reason + properties: + rejectedBy: + $ref: '#/components/schemas/EnumRejectedBy' + reason: + $ref: '#/components/schemas/RejectedReason' + links: + $ref: '#/components/schemas/Links' + meta: + $ref: '#/components/schemas/Meta' + ResponseError: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + $ref: '#/components/schemas/Meta' + ResponseErrorMetaSingle: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + LoggedUser: + type: object + description: Usuário (pessoa natural) que encontra-se logado na instituição receptora e que iniciará o processo de consentimento para compartilhamento de dados. + required: + - document + properties: + document: + type: object + required: + - identification + - rel + properties: + identification: + type: string + maxLength: 11 + description: Número do documento de identificação oficial do usuário. + example: '11111111111' + pattern: '^\d{11}$' + rel: + type: string + maxLength: 3 + description: Tipo do documento de identificação oficial do usuário. + example: CPF + pattern: '^[A-Z]{3}$' + BusinessEntity: + type: object + description: 'Titular, pessoa jurídica a quem se referem os dados que são objeto de compartilhamento.' + required: + - document + properties: + document: + type: object + required: + - identification + - rel + properties: + identification: + type: string + maxLength: 14 + description: Número do documento de identificação oficial do titular pessoa jurídica. + example: '11111111111111' + pattern: '^\d{14}$' + rel: + type: string + maxLength: 4 + description: Tipo do documento de identificação oficial do titular pessoa jurídica. + example: CNPJ + pattern: '^[A-Z]{4}$' + parameters: + consentId: + name: consentId + in: path + description: | + O consentId é o identificador único do consentimento e deverá ser um URN - Uniform Resource Name. + Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource + Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN + seja um identificador de recurso persistente e independente da localização. + Considerando a string urn:bancoex:C1DD33123 como exemplo para consentId temos: + - o namespace(urn) + - o identificador associado ao namespace da instituição transnmissora (bancoex) + - o identificador específico dentro do namespace (C1DD33123). + Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141). + required: true + schema: + type: string + pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$' + maxLength: 256 + Authorization: + name: Authorization + in: header + description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado + required: true + schema: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + xCustomerUserAgent: + name: x-customer-user-agent + in: header + description: Indica o user-agent que o usuário utiliza. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiAuthDate: + name: x-fapi-auth-date + in: header + description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a [RFC7231](https://tools.ietf.org/html/rfc7231).Exemplo: Sun, 10 Sep 2017 19:43:31 UTC' + required: false + schema: + type: string + pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$' + minLength: 29 + maxLength: 29 + xFapiCustomerIpAddress: + name: x-fapi-customer-ip-address + in: header + description: O endereço IP do usuário se estiver atualmente logado com o receptor. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiInteractionId: + name: x-fapi-interaction-id + in: header + description: 'Um UID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação. Se fornecido, o transmissor deve "reproduzir" esse valor no cabeçalho de resposta.' + required: false + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + securitySchemes: + OAuth2Security: + type: oauth2 + flows: + clientCredentials: + tokenUrl: 'https://authserver.example/token' + scopes: + consents: Criação do consentimento. + responses: + UnsupportedMediaType: + description: O formato do payload não é um formato suportado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + BadRequest: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + Forbidden: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + GatewayTimeout: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + InternalServerError: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + MethodNotAllowed: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotAcceptable: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotFound: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + TooManyRequests: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + UnprocessableEntity: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + Unauthorized: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + SiteIsOverloaded: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + additionalProperties: false + meta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + additionalProperties: false + 201ConsentsCreated: + description: Consentimento criado com sucesso. + headers: + x-fapi-interaction-id: + description: | + Um UID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação. + Se fornecido, o transmissor deve "reproduzir" esse valor no cabeçalho de resposta. + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + example: 73cac523-d3ae-2289-b106-330a6218710d + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseConsent' + 200ConsentsConsentIdRead: + description: Consentimento consultado com sucesso. + headers: + x-fapi-interaction-id: + description: | + Um UID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação. + Se fornecido, o transmissor deve "reproduzir" esse valor no cabeçalho de resposta. + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + example: 92cac523-d3ae-2289-b106-330a6218710d + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseConsentRead' + 204ConsentsConsentIdDeleted: + description: Consentimento revogado com sucesso. + headers: + x-fapi-interaction-id: + description: | + Um UID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação. + Se fornecido, o transmissor deve "reproduzir" esse valor no cabeçalho de resposta. + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + example: 85bac523-d3ae-2289-b106-330a6218710d \ No newline at end of file diff --git a/swagger-apis/consents/2.1.0.yml b/swagger-apis/consents/2.1.0.yml new file mode 100644 index 000000000..116842fa3 --- /dev/null +++ b/swagger-apis/consents/2.1.0.yml @@ -0,0 +1,1032 @@ +openapi: 3.0.0 +info: + title: API Consents - Open Finance Brasil + description: | + API que trata da criação, consulta e revogação de consentimentos para o Open Finance Brasil Dados cadastrais e transacionais - customer-data. + Não possui segregação entre pessoa natural e pessoa jurídica. + + # Orientações importantes + A API Consents trata dos consentimentos exclusivamente para a Dados cadastrais e transacionais do Open Finance Brasil. + - As informações da instituição receptora não trafegam na API Consents – a autenticação da receptora se dá através do [DCR](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/17378307/Dynamic+Client+Registration). + - Na chamada para a criação do consentimento deve-se utilizar um token gerado via `client_credentials`. + - Após o `POST` de criação do consentimento, o `STATUS` devolvido na resposta deverá ser `AWAITING_AUTHORISATION`. + - O `STATUS` será alterado para `AUTHORISED` somente após autenticação e confirmação por parte do usuário na instituição transmissora dos dados. + - Alteração obrigatória do status `AWAITING_AUTHORISATION` para `REVOKED` após 60 minutos. + - Todas as datas trafegadas nesta API seguem o padrão da [RFC3339](https://tools.ietf.org/html/rfc3339) e formato "zulu". + - A descrição do fluxo de consentimento encontra-se disponível no [Portal do desenvolvedor](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/17369300/Dados+Cadastrais+e+Transacionais#Fluxo-b%C3%A1sico-de-consentimento). + - O arquivo com o mapeamento completo entre `Roles`, `scopes` e `permissions` está disponibilizado no Portal do desenvolvedor, no mesmo item acima - descrição do fluxo de consentimento. + - A receptora deve enviar obrigatoriamente, no pedido de criação de consentimento, todas as permissions dos agrupamentos de dados as quais ela deseja consentimento, conforme tabela abaixo: + + ``` + |----------------------|-------------------------------|----------------------------------------------------------| + | CATEGORIA DE DADOS | AGRUPAMENTO | PERMISSIONS | + |----------------------|-------------------------------|----------------------------------------------------------| + | Cadastro | Dados Cadastrais PF | CUSTOMERS_PERSONAL_IDENTIFICATIONS_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Cadastro | Informações complementares PF | CUSTOMERS_PERSONAL_ADITTIONALINFO_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Cadastro | Dados Cadastrais PJ | CUSTOMERS_BUSINESS_IDENTIFICATIONS_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Cadastro | Informações complementares PJ | CUSTOMERS_BUSINESS_ADITTIONALINFO_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Contas | Saldos | ACCOUNTS_READ | + | | | ACCOUNTS_BALANCES_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Contas | Limites | ACCOUNTS_READ | + | | | ACCOUNTS_OVERDRAFT_LIMITS_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Contas | Extratos | ACCOUNTS_READ | + | | | ACCOUNTS_TRANSACTIONS_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Cartão de Crédito | Limites | CREDIT_CARDS_ACCOUNTS_READ | + | | | CREDIT_CARDS_ACCOUNTS_LIMITS_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Cartão de Crédito | Transações | CREDIT_CARDS_ACCOUNTS_READ | + | | | CREDIT_CARDS_ACCOUNTS_TRANSACTIONS_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Cartão de Crédito | Faturas | CREDIT_CARDS_ACCOUNTS_READ | + | | | CREDIT_CARDS_ACCOUNTS_BILLS_READ | + | | | CREDIT_CARDS_ACCOUNTS_BILLS_TRANSACTIONS_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Operações de Crédito | Dados do Contrato | LOANS_READ | + | | | LOANS_WARRANTIES_READ | + | | | LOANS_SCHEDULED_INSTALMENTS_READ | + | | | LOANS_PAYMENTS_READ | + | | | FINANCINGS_READ | + | | | FINANCINGS_WARRANTIES_READ | + | | | FINANCINGS_SCHEDULED_INSTALMENTS_READ | + | | | FINANCINGS_PAYMENTS_READ | + | | | UNARRANGED_ACCOUNTS_OVERDRAFT_READ | + | | | UNARRANGED_ACCOUNTS_OVERDRAFT_WARRANTIES_READ | + | | | UNARRANGED_ACCOUNTS_OVERDRAFT_SCHEDULED_INSTALMENTS_READ | + | | | UNARRANGED_ACCOUNTS_OVERDRAFT_PAYMENTS_READ | + | | | INVOICE_FINANCINGS_READ | + | | | INVOICE_FINANCINGS_WARRANTIES_READ | + | | | INVOICE_FINANCINGS_SCHEDULED_INSTALMENTS_READ | + | | | INVOICE_FINANCINGS_PAYMENTS_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + | Investimento | Dados da Operação | BANK_FIXED_INCOMES_READ | + | | | CREDIT_FIXED_INCOMES_READ | + | | | FUNDS_READ | + | | | VARIABLE_INCOMES_READ | + | | | TREASURE_TITLES_READ | + | | | RESOURCES_READ | + |----------------------|-------------------------------|----------------------------------------------------------| + ``` + - A instituição transmissora deve validar o preenchimento correto desses agrupamentos no momento da geração do consentimento. + - Caso a instiuição receptora envie permissões divergentes ao agrupamento especificado na tabela, a transmissora deve rejeitar o pedido da receptora dando retorno HTTP Status Code 400. + - A transmissora deve retornar, da lista de permissions requisitadas, apenas o subconjunto de permissions por ela suportada, removendo da lista as permissions de produtos não suportados e retornando HTTP Status Code 201. Caso não restem permissões funcionais, a instituição transmissora deve retornar o erro HTTP Code "422 Unprocessable Entity". + version: 2.1.0 + license: + name: Apache 2.0 + url: 'http://www.apache.org/licenses/LICENSE-2.0' + contact: + name: Governança do Open Finance Brasil - Especificações + email: gt-interfaces@openbankingbr.org + url: 'https://openbanking-brasil.github.io/areadesenvolvedor/' +servers: + - url: 'https://api.banco.com.br/open-banking/consents/v2' + description: Servidor de Produção + - url: 'https://apih.banco.com.br/open-banking/consents/v2' + description: Servidor de Homologação +tags: + - name: Consents + description: 'Operações para criação, consulta e revogação do consentimento dado pelo cliente.' +paths: + /consents: + post: + tags: + - Consents + summary: Criar novo pedido de consentimento. + operationId: consentsPostConsents + description: Método para a criação de um novo consentimento. + parameters: + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateConsent' + description: Payload para criação do consentimento. + required: true + responses: + '201': + $ref: '#/components/responses/201ConsentsCreated' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + description: Erro inesperado. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + security: + - OAuth2Security: + - consents + '/consents/{consentId}': + get: + tags: + - Consents + summary: Obter detalhes do consentimento identificado por consentId. + operationId: consentsGetConsentsConsentId + description: Método para obter detalhes do consentimento identificado por consentId. + parameters: + - $ref: '#/components/parameters/consentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/200ConsentsConsentIdRead' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + description: Erro inesperado. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + security: + - OAuth2Security: + - consents + delete: + tags: + - Consents + summary: Deletar / Revogar o consentimento identificado por consentId. + operationId: consentsDeleteConsentsConsentId + description: Método para deletar / revogar o consentimento identificado por consentId. + parameters: + - $ref: '#/components/parameters/consentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '204': + $ref: '#/components/responses/204ConsentsConsentIdDeleted' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + description: Erro inesperado. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + security: + - OAuth2Security: + - consents +components: + schemas: + Links: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + last: + type: string + format: uri + maxLength: 2000 + description: URI da última página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + Meta: + type: object + description: Meta informações referente à API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + CreateConsent: + type: object + required: + - data + properties: + data: + type: object + required: + - permissions + - loggedUser + - expirationDateTime + properties: + loggedUser: + $ref: '#/components/schemas/LoggedUser' + businessEntity: + $ref: '#/components/schemas/BusinessEntity' + permissions: + type: array + items: + description: 'Especifica os tipos de permissões de acesso às APIs no escopo do Open Finance Brasil - Dados cadastrais e transacionais, de acordo com os blocos de consentimento fornecidos pelo usuário e necessários ao acesso a cada endpoint das APIs. Esse array não deve ter duplicidade de itens.' + type: string + enum: + - ACCOUNTS_READ + - ACCOUNTS_BALANCES_READ + - ACCOUNTS_TRANSACTIONS_READ + - ACCOUNTS_OVERDRAFT_LIMITS_READ + - CREDIT_CARDS_ACCOUNTS_READ + - CREDIT_CARDS_ACCOUNTS_BILLS_READ + - CREDIT_CARDS_ACCOUNTS_BILLS_TRANSACTIONS_READ + - CREDIT_CARDS_ACCOUNTS_LIMITS_READ + - CREDIT_CARDS_ACCOUNTS_TRANSACTIONS_READ + - CUSTOMERS_PERSONAL_IDENTIFICATIONS_READ + - CUSTOMERS_PERSONAL_ADITTIONALINFO_READ + - CUSTOMERS_BUSINESS_IDENTIFICATIONS_READ + - CUSTOMERS_BUSINESS_ADITTIONALINFO_READ + - FINANCINGS_READ + - FINANCINGS_SCHEDULED_INSTALMENTS_READ + - FINANCINGS_PAYMENTS_READ + - FINANCINGS_WARRANTIES_READ + - INVOICE_FINANCINGS_READ + - INVOICE_FINANCINGS_SCHEDULED_INSTALMENTS_READ + - INVOICE_FINANCINGS_PAYMENTS_READ + - INVOICE_FINANCINGS_WARRANTIES_READ + - LOANS_READ + - LOANS_SCHEDULED_INSTALMENTS_READ + - LOANS_PAYMENTS_READ + - LOANS_WARRANTIES_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_SCHEDULED_INSTALMENTS_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_PAYMENTS_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_WARRANTIES_READ + - RESOURCES_READ + - BANK_FIXED_INCOMES_READ + - CREDIT_FIXED_INCOMES_READ + - FUNDS_READ + - VARIABLE_INCOMES_READ + - TREASURE_TITLES_READ + minItems: 1 + example: + - ACCOUNTS_READ + - ACCOUNTS_OVERDRAFT_LIMITS_READ + - RESOURCES_READ + expirationDateTime: + description: 'Data e hora de expiração da permissão. De preenchimento obrigatório, reflete a data limite de validade do consentimento. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + EnumRejectedBy: + type: string + description: | + Informar usuário responsável pela rejeição. + 1. USER usuário + 2. ASPSP instituição transmissora + 3. TPP instituição receptora + enum: + - USER + - ASPSP + - TPP + example: USER + EnumReasonCode: + type: string + description: | + Define o código da razão pela qual o consentimento foi rejeitado. + + - CONSENT_EXPIRED – consentimento que ultrapassou o tempo limite para autorização. + - CUSTOMER_MANUALLY_REJECTED – cliente efetuou a rejeição do consentimento manualmente através de interação nas instituições participantes. + - CUSTOMER_MANUALLY_REVOKED – cliente efetuou a revogação após a autorização do consentimento. + - CONSENT_MAX_DATE_REACHED – consentimento que ultrapassou o tempo limite de compartilhamento. + - CONSENT_TECHNICAL_ISSUE – consentimento que foi rejeitado devido a um problema técnico que impossibilita seu uso pela instituição receptora, por exemplo: falha associada a troca do AuthCode pelo AccessToken, durante o processo de Hybid Flow. + - INTERNAL_SECURITY_REASON – consentimento que foi rejeitado devido as políticas de segurança aplicada pela instituição transmissora. + enum: + - CONSENT_EXPIRED + - CUSTOMER_MANUALLY_REJECTED + - CUSTOMER_MANUALLY_REVOKED + - CONSENT_MAX_DATE_REACHED + - CONSENT_TECHNICAL_ISSUE + - INTERNAL_SECURITY_REASON + example: CONSENT_EXPIRED + RejectedReason: + type: object + description: Define a razão pela qual o consentimento foi rejeitado. + required: + - code + properties: + code: + $ref: '#/components/schemas/EnumReasonCode' + additionalInformation: + type: string + description: Contém informações adicionais a critério da transmissora. + maxLength: 140 + pattern: '[\w\W\s]*' + example: Tempo de confirmação da múltipla alçada excedido. + ResponseConsent: + type: object + required: + - data + properties: + data: + type: object + required: + - consentId + - creationDateTime + - status + - statusUpdateDateTime + - permissions + - expirationDateTime + properties: + consentId: + description: | + O consentId é o identificador único do consentimento e deverá ser um URN - Uniform Resource Name. + Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource + Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN + seja um identificador de recurso persistente e independente da localização. + Considerando a string urn:bancoex:C1DD33123 como exemplo para consentId temos: + - o namespace(urn) + - o identificador associado ao namespace da instituição transnmissora (bancoex) + - o identificador específico dentro do namespace (C1DD33123). + Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141). + type: string + pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$' + maxLength: 256 + example: 'urn:bancoex:C1DD33123' + creationDateTime: + description: 'Data e hora em que o recurso foi criado. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).' + type: string + format: date-time + example: '2021-05-21T08:30:00Z' + maxLength: 20 + status: + description: Estado atual do consentimento cadastrado. + type: string + enum: + - AUTHORISED + - AWAITING_AUTHORISATION + - REJECTED + example: AWAITING_AUTHORISATION + statusUpdateDateTime: + description: 'Data e hora em que o recurso foi atualizado. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).' + type: string + format: date-time + example: '2021-05-21T08:30:00Z' + maxLength: 20 + permissions: + type: array + minItems: 1 + description: 'Especifica os tipos de permissões de acesso às APIs no escopo do Open Finance Brasil - Dados cadastrais e transacionais, de acordo com os blocos de consentimento fornecidos pelo usuário e necessários ao acesso a cada endpoint das APIs. Esse array não deve ter duplicidade de itens.' + items: + type: string + enum: + - ACCOUNTS_READ + - ACCOUNTS_BALANCES_READ + - ACCOUNTS_TRANSACTIONS_READ + - ACCOUNTS_OVERDRAFT_LIMITS_READ + - CREDIT_CARDS_ACCOUNTS_READ + - CREDIT_CARDS_ACCOUNTS_BILLS_READ + - CREDIT_CARDS_ACCOUNTS_BILLS_TRANSACTIONS_READ + - CREDIT_CARDS_ACCOUNTS_LIMITS_READ + - CREDIT_CARDS_ACCOUNTS_TRANSACTIONS_READ + - CUSTOMERS_PERSONAL_IDENTIFICATIONS_READ + - CUSTOMERS_PERSONAL_ADITTIONALINFO_READ + - CUSTOMERS_BUSINESS_IDENTIFICATIONS_READ + - CUSTOMERS_BUSINESS_ADITTIONALINFO_READ + - FINANCINGS_READ + - FINANCINGS_SCHEDULED_INSTALMENTS_READ + - FINANCINGS_PAYMENTS_READ + - FINANCINGS_WARRANTIES_READ + - INVOICE_FINANCINGS_READ + - INVOICE_FINANCINGS_SCHEDULED_INSTALMENTS_READ + - INVOICE_FINANCINGS_PAYMENTS_READ + - INVOICE_FINANCINGS_WARRANTIES_READ + - LOANS_READ + - LOANS_SCHEDULED_INSTALMENTS_READ + - LOANS_PAYMENTS_READ + - LOANS_WARRANTIES_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_SCHEDULED_INSTALMENTS_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_PAYMENTS_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_WARRANTIES_READ + - RESOURCES_READ + - BANK_FIXED_INCOMES_READ + - CREDIT_FIXED_INCOMES_READ + - FUNDS_READ + - VARIABLE_INCOMES_READ + - TREASURE_TITLES_READ + example: + - ACCOUNTS_READ + - ACCOUNTS_OVERDRAFT_LIMITS_READ + - RESOURCES_READ + expirationDateTime: + description: 'Data e hora de expiração da permissão. De preenchimento obrigatório, reflete a data limite de validade do consentimento. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).' + type: string + format: date-time + example: '2021-05-21T08:30:00Z' + maxLength: 20 + links: + $ref: '#/components/schemas/Links' + meta: + $ref: '#/components/schemas/Meta' + ResponseConsentRead: + type: object + required: + - data + properties: + data: + type: object + required: + - consentId + - creationDateTime + - status + - statusUpdateDateTime + - permissions + - expirationDateTime + properties: + consentId: + description: | + O consentId é o identificador único do consentimento e deverá ser um URN - Uniform Resource Name. + Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource + Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN + seja um identificador de recurso persistente e independente da localização. + Considerando a string urn:bancoex:C1DD33123 como exemplo para consentId temos: + - o namespace(urn) + - o identificador associado ao namespace da instituição transnmissora (bancoex) + - o identificador específico dentro do namespace (C1DD33123). + Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141). + type: string + pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$' + maxLength: 256 + example: 'urn:bancoex:C1DD33123' + creationDateTime: + description: 'Data e hora em que o recurso foi criado. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).' + type: string + format: date-time + example: '2021-05-21T08:30:00Z' + maxLength: 20 + status: + description: Estado atual do consentimento cadastrado. + type: string + enum: + - AUTHORISED + - AWAITING_AUTHORISATION + - REJECTED + example: AWAITING_AUTHORISATION + statusUpdateDateTime: + description: 'Data e hora em que o recurso foi atualizado. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).' + type: string + format: date-time + example: '2021-05-21T08:30:00Z' + maxLength: 20 + permissions: + type: array + minItems: 1 + description: 'Especifica os tipos de permissões de acesso às APIs no escopo do Open Finance Brasil - Dados cadastrais e transacionais, de acordo com os blocos de consentimento fornecidos pelo usuário e necessários ao acesso a cada endpoint das APIs. Esse array não deve ter duplicidade de itens.' + items: + type: string + enum: + - ACCOUNTS_READ + - ACCOUNTS_BALANCES_READ + - ACCOUNTS_TRANSACTIONS_READ + - ACCOUNTS_OVERDRAFT_LIMITS_READ + - CREDIT_CARDS_ACCOUNTS_READ + - CREDIT_CARDS_ACCOUNTS_BILLS_READ + - CREDIT_CARDS_ACCOUNTS_BILLS_TRANSACTIONS_READ + - CREDIT_CARDS_ACCOUNTS_LIMITS_READ + - CREDIT_CARDS_ACCOUNTS_TRANSACTIONS_READ + - CUSTOMERS_PERSONAL_IDENTIFICATIONS_READ + - CUSTOMERS_PERSONAL_ADITTIONALINFO_READ + - CUSTOMERS_BUSINESS_IDENTIFICATIONS_READ + - CUSTOMERS_BUSINESS_ADITTIONALINFO_READ + - FINANCINGS_READ + - FINANCINGS_SCHEDULED_INSTALMENTS_READ + - FINANCINGS_PAYMENTS_READ + - FINANCINGS_WARRANTIES_READ + - INVOICE_FINANCINGS_READ + - INVOICE_FINANCINGS_SCHEDULED_INSTALMENTS_READ + - INVOICE_FINANCINGS_PAYMENTS_READ + - INVOICE_FINANCINGS_WARRANTIES_READ + - LOANS_READ + - LOANS_SCHEDULED_INSTALMENTS_READ + - LOANS_PAYMENTS_READ + - LOANS_WARRANTIES_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_SCHEDULED_INSTALMENTS_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_PAYMENTS_READ + - UNARRANGED_ACCOUNTS_OVERDRAFT_WARRANTIES_READ + - RESOURCES_READ + - BANK_FIXED_INCOMES_READ + - CREDIT_FIXED_INCOMES_READ + - FUNDS_READ + - VARIABLE_INCOMES_READ + - TREASURE_TITLES_READ + example: + - ACCOUNTS_READ + - ACCOUNTS_OVERDRAFT_LIMITS_READ + - RESOURCES_READ + expirationDateTime: + description: 'Data e hora de expiração da permissão. De preenchimento obrigatório, reflete a data limite de validade do consentimento. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).' + type: string + format: date-time + example: '2021-05-21T08:30:00Z' + maxLength: 20 + rejection: + type: object + description: Objeto a ser retornado caso o consentimento seja rejeitado. + required: + - rejectedBy + - reason + properties: + rejectedBy: + $ref: '#/components/schemas/EnumRejectedBy' + reason: + $ref: '#/components/schemas/RejectedReason' + links: + $ref: '#/components/schemas/Links' + meta: + $ref: '#/components/schemas/Meta' + ResponseError: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + $ref: '#/components/schemas/Meta' + ResponseErrorMetaSingle: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + LoggedUser: + type: object + description: Usuário (pessoa natural) que encontra-se logado na instituição receptora e que iniciará o processo de consentimento para compartilhamento de dados. + required: + - document + properties: + document: + type: object + required: + - identification + - rel + properties: + identification: + type: string + maxLength: 11 + description: Número do documento de identificação oficial do usuário. + example: '11111111111' + pattern: '^\d{11}$' + rel: + type: string + maxLength: 3 + description: Tipo do documento de identificação oficial do usuário. + example: CPF + pattern: '^[A-Z]{3}$' + BusinessEntity: + type: object + description: 'Titular, pessoa jurídica a quem se referem os dados que são objeto de compartilhamento.' + required: + - document + properties: + document: + type: object + required: + - identification + - rel + properties: + identification: + type: string + maxLength: 14 + description: Número do documento de identificação oficial do titular pessoa jurídica. + example: '11111111111111' + pattern: '^\d{14}$' + rel: + type: string + maxLength: 4 + description: Tipo do documento de identificação oficial do titular pessoa jurídica. + example: CNPJ + pattern: '^[A-Z]{4}$' + parameters: + consentId: + name: consentId + in: path + description: | + O consentId é o identificador único do consentimento e deverá ser um URN - Uniform Resource Name. + Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource + Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN + seja um identificador de recurso persistente e independente da localização. + Considerando a string urn:bancoex:C1DD33123 como exemplo para consentId temos: + - o namespace(urn) + - o identificador associado ao namespace da instituição transnmissora (bancoex) + - o identificador específico dentro do namespace (C1DD33123). + Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141). + required: true + schema: + type: string + pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$' + maxLength: 256 + Authorization: + name: Authorization + in: header + description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado + required: true + schema: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + xCustomerUserAgent: + name: x-customer-user-agent + in: header + description: Indica o user-agent que o usuário utiliza. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiAuthDate: + name: x-fapi-auth-date + in: header + description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a [RFC7231](https://tools.ietf.org/html/rfc7231).Exemplo: Sun, 10 Sep 2017 19:43:31 UTC' + required: false + schema: + type: string + pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$' + minLength: 29 + maxLength: 29 + xFapiCustomerIpAddress: + name: x-fapi-customer-ip-address + in: header + description: O endereço IP do usuário se estiver atualmente logado com o receptor. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiInteractionId: + name: x-fapi-interaction-id + in: header + description: 'Um UID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação. Se fornecido, o transmissor deve "reproduzir" esse valor no cabeçalho de resposta.' + required: false + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + securitySchemes: + OAuth2Security: + type: oauth2 + flows: + clientCredentials: + tokenUrl: 'https://authserver.example/token' + scopes: + consents: Criação do consentimento. + responses: + UnsupportedMediaType: + description: O formato do payload não é um formato suportado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + BadRequest: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + Forbidden: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + GatewayTimeout: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + InternalServerError: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + MethodNotAllowed: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotAcceptable: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotFound: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + TooManyRequests: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + UnprocessableEntity: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + Unauthorized: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + SiteIsOverloaded: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + additionalProperties: false + meta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + additionalProperties: false + 201ConsentsCreated: + description: Consentimento criado com sucesso. + headers: + x-fapi-interaction-id: + description: | + Um UID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação. + Se fornecido, o transmissor deve "reproduzir" esse valor no cabeçalho de resposta. + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + example: 73cac523-d3ae-2289-b106-330a6218710d + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseConsent' + 200ConsentsConsentIdRead: + description: Consentimento consultado com sucesso. + headers: + x-fapi-interaction-id: + description: | + Um UID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação. + Se fornecido, o transmissor deve "reproduzir" esse valor no cabeçalho de resposta. + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + example: 92cac523-d3ae-2289-b106-330a6218710d + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseConsentRead' + 204ConsentsConsentIdDeleted: + description: Consentimento revogado com sucesso. + headers: + x-fapi-interaction-id: + description: | + Um UID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação. + Se fornecido, o transmissor deve "reproduzir" esse valor no cabeçalho de resposta. + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + example: 85bac523-d3ae-2289-b106-330a6218710d \ No newline at end of file diff --git a/swagger-apis/consents/index.html b/swagger-apis/consents/index.html index 548cb7d8d..c2d4e1f39 100644 --- a/swagger-apis/consents/index.html +++ b/swagger-apis/consents/index.html @@ -55,8 +55,10 @@ {"name": "2.0.0-RC1.0", "url": "./2.0.0-RC1.0.yml"}, {"name": "2.0.0", "url": "./2.0.0.yml"}, {"name": "2.0.1", "url": "./2.0.1.yml"}, - {"name": "2.1.0-rc1.0", "url": "./2.1.0-rc1.0.yml"}], - "urls.primaryName": "2.1.0-rc1.0", // default spec + {"name": "2.1.0-rc1.0", "url": "./2.1.0-rc1.0.yml"}, + {"name": "2.1.0-rc2.0", "url": "./2.1.0-rc2.0.yml"}, + {"name": "2.1.0", "url": "./2.1.0.yml"}], + "urls.primaryName": "2.1.0", // default spec dom_id: '#swagger-ui', deepLinking: true, supportedSubmitMethods:[], diff --git a/swagger-apis/credit-fixed-incomes/1.0.0-rc2.0.yml b/swagger-apis/credit-fixed-incomes/1.0.0-rc2.0.yml new file mode 100644 index 000000000..c9147938c --- /dev/null +++ b/swagger-apis/credit-fixed-incomes/1.0.0-rc2.0.yml @@ -0,0 +1,1702 @@ +openapi: 3.0.0 +info: + title: API Credit Fixed Incomes - Open Finance Brasil + description: | + API de informações de operações de Renda Fixa Crédito do Open Finance Brasil – Fase 4. API que retorna informações de operações de investimento do tipo Renda Fixa Crédito (Debêntures, CRI/CRA) mantidas nas instituições transmissoras por seus clientes, incluindo dados como denominação do produto, rentabilidade, quantidade, prazos, saldos em posição do cliente e movimentações financeiras. + Não possui segregação entre pessoa natural e pessoa jurídica. Requer consentimento do cliente para todos os endpoints. A exposição se dará por cada operação de renda fixa contratada pelo cliente. + version: 1.0.0-rc2.0 + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' + contact: + name: Governança do Open Finance Brasil – Especificações + email: gt-interfaces@openbankingbr.org + url: 'https://openbanking-brasil.github.io/areadesenvolvedor/' +servers: + - url: 'https://api.banco.com.br/open-banking/credit-fixed-incomes/v1' + description: Servidor de Produção + - url: 'https://apih.banco.com.br/open-banking/credit-fixed-incomes/v1' + description: Servidor de Homologação +tags: + - name: Product List + description: Obtém a lista de operações de Renda Fixa Crédito mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + - name: Product Identification + description: Obtém os dados da operação de Renda Fixa Crédito identificada por investmentId. + - name: Balances + description: Obtém a posição da operação de Renda Fixa Crédito identificada por investmentId. + - name: Transactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Crédito identificada por investmentId. + - name: Transactions Current + description: 'Obtém as movimentações recentes da operação de Renda Fixa Crédito identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' +paths: + /investments: + get: + tags: + - Product List + summary: Obtém a lista de operações de Renda Fixa Crédito mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + operationId: creditFixedIncomesGetInvestments + description: Obtém a lista de operações de Renda Fixa Crédito mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. - + parameters: + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + responses: + '200': + $ref: '#/components/responses/ResponseCreditFixedIncomesProductList' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - credit-fixed-incomes + '/investments/{investmentId}': + get: + tags: + - Product Identification + summary: Obtém os dados da operação de Renda Fixa Crédito identificada por investmentId. + operationId: creditFixedIncomesGetInvestmentsInvestmentId + description: Obtém os dados da operação de Renda Fixa Crédito identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseCreditFixedIncomesProductIdentification' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - credit-fixed-incomes + '/investments/{investmentId}/balances': + get: + tags: + - Balances + summary: Obtém a posição da operação de Renda Fixa Crédito identificada por investmentId. + operationId: creditFixedIncomesGetInvestmentsInvestmentIdBalances + description: Obtém a posição da operação de Renda Fixa Crédito identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseCreditFixedIncomesBalances' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - credit-fixed-incomes + '/investments/{investmentId}/transactions': + get: + tags: + - Transactions + summary: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Crédito identificada por investmentId. + operationId: creditFixedIncomesGetInvestmentsInvestmentIdTransactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Crédito identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDate' + - $ref: '#/components/parameters/toTransactionDate' + responses: + '200': + $ref: '#/components/responses/ResponseCreditFixedIncomesTransactions' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - credit-fixed-incomes + '/investments/{investmentId}/transactions-current': + get: + tags: + - Transactions Current + summary: 'Obtém as movimentações recentes da operação de Renda Fixa Crédito identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + operationId: creditFixedIncomesGetInvestmentsInvestmentIdTransactionsCurrent + description: 'Obtém as movimentações recentes da operação de Renda Fixa Crédito identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDateCurrent' + - $ref: '#/components/parameters/toTransactionDateCurrent' + responses: + '200': + $ref: '#/components/responses/ResponseCreditFixedIncomesTransactionsCurrent' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - credit-fixed-incomes +components: + schemas: + ResponseCreditFixedIncomesProductList: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/CreditFixedList' + links: + $ref: '#/components/schemas/CreditFixedIncomesLinks' + meta: + $ref: '#/components/schemas/CreditFixedIncomesMeta' + ResponseCreditFixedIncomesProductIdentification: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/CreditFixedIdentification' + links: + $ref: '#/components/schemas/CreditFixedIncomesLinks' + meta: + $ref: '#/components/schemas/CreditFixedIncomesMeta' + ResponseCreditFixedIncomesBalances: + type: object + required: + - data + - links + - meta + properties: + data: + type: object + required: + - referenceDateTime + - updatedUnitPrice + - quantity + - grossAmount + - netAmount + - incomeTax + - financialTransactionTax + - blockedBalance + - purchaseUnitPrice + properties: + referenceDateTime: + $ref: '#/components/schemas/ReferenceDateTime' + updatedUnitPrice: + $ref: '#/components/schemas/UpdatedUnitPrice' + quantity: + type: string + format: double + description: quantidade de títulos detidos na data da posição do cliente + maxLength: 24 + minLength: 4 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '15.00' + grossAmount: + $ref: '#/components/schemas/GrossAmount' + netAmount: + $ref: '#/components/schemas/NetAmount' + incomeTax: + $ref: '#/components/schemas/IncomeTax' + financialTransactionTax: + $ref: '#/components/schemas/FinancialTransactionTax' + blockedBalance: + $ref: '#/components/schemas/BlockedBalance' + purchaseUnitPrice: + $ref: '#/components/schemas/PurchaseUnitPrice' + preFixedRate: + type: string + description: | + Taxa de remuneração acordada com o cliente na contratação. + Em casos de produtos progressivos, considerar taxa vigente. + É esperado que o preenchimento deste campo pelas participantes seja enviado de acordo com o campo preFixedRate do endpoint /investment/{investmentId}. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '0.300000' + postFixedIndexerPercentage: + $ref: '#/components/schemas/PostFixedIndexerPercentage' + fine: + $ref: '#/components/schemas/Fine' + latePayment: + $ref: '#/components/schemas/LatePayment' + links: + $ref: '#/components/schemas/CreditFixedIncomesLinks' + meta: + $ref: '#/components/schemas/CreditFixedIncomesMeta' + ResponseCreditFixedIncomesTransactions: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/CreditFixedIncomesTransactions' + links: + $ref: '#/components/schemas/CreditFixedIncomesLinks' + meta: + $ref: '#/components/schemas/CreditFixedIncomesMetaTransactions' + ResponseCreditFixedIncomesTransactionsCurrent: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + type: object + required: + - type + - transactionType + - transactionDate + - transactionGrossValue + - transactionNetValue + - transactionId + properties: + type: + $ref: '#/components/schemas/Type' + transactionType: + $ref: '#/components/schemas/TransactionType' + transactionTypeAdditionalInfo: + type: string + description: | + Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'OUTROS' no campo 'transactionType'. + maxLength: 100 + pattern: '[\w\W\s]*' + transactionDate: + type: string + format: date + description: Data da movimentação + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + transactionUnitPrice: + type: object + description: | + valor unitário negociado com o cliente na data de aquisição + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA' ou 'VENCIMENTO'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + minLength: 4 + example: '1000.000004' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + transactionQuantity: + type: string + description: | + Quantidade de títulos envolvidos na movimentação + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA', 'VENCIMENTO', 'TRANSFERENCIA_TITULARIDADE' ou 'TRANSFERENCIA_CUSTODIA'. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.25' + transactionGrossValue: + $ref: '#/components/schemas/TransactionGrossValue' + incomeTax: + type: object + description: | + Valor do imposto de renda recolhido na transação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + financialTransactionTax: + type: object + description: | + Valor do IOF recolhido na transação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + transactionNetValue: + $ref: '#/components/schemas/TransactionNetValue' + remunerationTransactionRate: + $ref: '#/components/schemas/RemunerationTransactionRate' + indexerPercentage: + type: string + description: | + Percentual máximo do indexador na transação acordado com o cliente na contratação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '1.100000' + transactionId: + type: string + description: | + Código ou identificador único prestado pela instituição para individualizar o movimento. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + links: + $ref: '#/components/schemas/CreditFixedIncomesLinks' + meta: + $ref: '#/components/schemas/CreditFixedIncomesMetaTransactions' + BlockedBalance: + type: object + description: 'valor líquido não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros)' + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + CreditFixedIdentification: + type: object + required: + - issuerInstitutionCnpjNumber + - investmentType + - remuneration + - issueUnitPrice + - issueDate + - dueDate + - voucherPaymentIndicator + - purchaseDate + - gracePeriodDate + - taxExemptProduct + properties: + issuerInstitutionCnpjNumber: + type: string + description: CNPJ da instituição emissora + maxLength: 14 + pattern: '^\d{14}$' + example: '11225860000140' + isinCode: + type: string + description: | + Código ISIN é um código universal que identifica cada valor mobiliário ou instrumento financeiro, conforme Norma ISO 6166. Caso a transmissora possua a informação o envio deste campo é obrigatório. + + [Restrição] Deve ser preenchido nos casos em que o 'clearingCode' não seja preenchido. + maxLength: 12 + pattern: '^[A-Z]{2}([A-Z0-9]){9}\d{1}$' + example: BRCST4CTF001 + investmentType: + $ref: '#/components/schemas/EnumInvestimentType' + debtorCnpjNumber: + type: string + description: | + CNPJ do devedor. Caso a transmissora possua a informação para os produtos CRI e CRA, o envio deste campo é obrigatório. + maxLength: 14 + pattern: '^\d{14}$' + example: '11225860000140' + debtorName: + type: string + description: | + Nome do devedor. Caso a transmissora possua a informação para os produtos CRI e CRA, o envio deste campo é obrigatório. + pattern: '[\w\W\s]*' + maxLength: 70 + example: Roberto Marino + taxExemptProduct: + $ref: '#/components/schemas/EnumTaxExemptProduct' + remuneration: + $ref: '#/components/schemas/Remuneration' + issueUnitPrice: + $ref: '#/components/schemas/IssueUnitPrice' + issueDate: + type: string + format: date + description: Data de emissão do título + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-16' + dueDate: + type: string + format: date + description: Data de vencimento do título + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + voucherPaymentIndicator: + $ref: '#/components/schemas/VoucherPaymentIndicator' + voucherPaymentPeriodicity: + $ref: '#/components/schemas/VoucherPaymentPeriodicity' + voucherPaymentPeriodicityAdditionalInfo: + type: string + description: | + Informações adicionais da periodicidade de pagamento de cupom + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'Outros' no campo 'voucherPaymentPeriodicity'. + maxLength: 50 + pattern: '[\w\W\s]*' + example: Diária + clearingCode: + type: string + description: | + Código de registro do ativo na Clearing. Caso a transmissora possua a informação o envio deste campo é obrigatório. + + [Restrição] Deve ser preenchido nos casos em que o 'isinCode' não seja preenchido. + maxLength: 30 + pattern: '[\w\W-]*' + example: CDB421GPXXX + purchaseDate: + type: string + format: date + description: Data de aquisição do cliente + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + gracePeriodDate: + type: string + format: date + description: Data até a qual o cliente não poderá resgatar antecipadamente seu investimento + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-16' + CreditFixedIncomesLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + CreditFixedIncomesMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + CreditFixedIncomesMetaTransactions: + type: object + description: Meta informações referente a API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + CreditFixedList: + type: object + description: Lista de títulos de renda fixa crédito mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento + required: + - brandName + - companyCnpj + - investmentType + - investmentId + properties: + brandName: + type: string + description: 'Nome da Marca reportada pelo participante no Open Finance. Recomenda-se utilizar, sempre que possível, o mesmo nome de marca atribuído no campo do diretório Customer Friendly Server Name (Authorisation Server).' + pattern: '[\w\W\s]*' + maxLength: 80 + example: Organização A + companyCnpj: + type: string + description: 'Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. Deve-se ter apenas os números do CNPJ, sem máscara' + maxLength: 14 + pattern: '^\d{14}$' + example: '21128159000166' + investmentType: + $ref: '#/components/schemas/EnumInvestimentType' + investmentId: + type: string + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + Currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + EnumCalculation: + type: string + description: | + Base de cálculo (dias úteis ou dias corridos). + 1. dias úteis + 2. dias corridos + enum: + - DIAS_UTEIS + - DIAS_CORRIDOS + example: DIAS_CORRIDOS + EnumTaxExemptProduct: + type: string + description: Indicador de um produto incentivado + enum: + - SIM + - NAO + example: SIM + EnumIndexer: + type: string + description: | + Índice utilizado como referência para a correção da rentabilidade e/ou rendimentos do ativo + 1. CDI + 2. DI + 3. TR + 4. IPCA + 5. IGP_M + 6. IGP_DI + 7. INPC + 8. BCP + 10. TLC + 11. SELIC + 12. PRE_FIXADO + 13. OUTROS + enum: + - CDI + - DI + - TR + - IPCA + - IGP_M + - IGP_DI + - INPC + - BCP + - TLC + - SELIC + - PRE_FIXADO + - OUTROS + example: CDI + EnumInvestimentType: + type: string + description: 'Especificação do ativo em questão (Debêntures, CRI ou CRA).' + enum: + - DEBENTURES + - CRI + - CRA + example: CRI + EnumRatePeriodicity: + type: string + description: 'Periodicidade da taxa de remuneração (mensal, anual, diário, semestral)' + enum: + - MENSAL + - ANUAL + - DIARIO + - SEMESTRAL + example: MENSAL + EnumRateType: + type: string + description: | + Tipo da taxa de remuneração + 1. LINEAR + 2. EXPONENCIAL + enum: + - LINEAR + - EXPONENCIAL + example: LINEAR + FinancialTransactionTax: + type: object + description: | + Valor do imposto (IOF) provisionado considerando a alíquota vigente na data de referência. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + Fine: + type: object + description: | + Valor de multa devido ao atraso do pagamento acordado em contrato. + Caso a transmissora possua a informação, o envio deste campo é obrigatório. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + GrossAmount: + type: object + description: valor do investimento que se refere a quantidade x PU atualizado na data de referência + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + IncomeTax: + type: object + description: | + Valor do imposto provisionado considerando a alíquota vigente na data de referência. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + IndexerPercentage: + type: string + description: | + Percentual máximo do indexador na transação acordado com o cliente na contratação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '1.100000' + IssueUnitPrice: + type: object + required: + - amount + - currency + properties: + amount: + type: string + description: Valor relacionado ao objeto. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.000004' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + LatePayment: + type: object + description: | + Valor de mora devido ao atraso do pagamento acordado em contrato. + Caso a transmissora possua a informação, o envio deste campo é obrigatório. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + NetAmount: + type: object + description: 'valor do investimento atualizado na data de referência, posterior a dedução de impostos (IOF e IR)' + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + PostFixedIndexerPercentage: + type: string + description: | + Percentual do indexador acordado com o cliente na contratação. + Em casos de produtos progressivos, considerar taxa vigente. + É esperado que o preenchimento deste campo pelas participantes seja enviado de acordo com o campo postFixedIndexerPercentagedo endpoint /investment/{investmentId}. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '1.100000' + PurchaseUnitPrice: + type: object + description: valor unitário negociado com o cliente na data de aquisição + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + minLength: 4 + example: '1000.000004' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + ReferenceDateTime: + type: string + format: date-time + description: 'data e hora da última posição consolidada disponível a que se referem os dados transacionais do cliente disponíveis nos canais eletrônicos; Na representação data deve se considerar os minutos e segundos como zero (00:00:00Z)' + maxLength: 20 + pattern: '(^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$)' + example: '2022-07-21T17:32:00Z' + Remuneration: + type: object + required: + - rateType + - ratePeriodicity + - calculation + - indexer + properties: + preFixedRate: + type: string + description: | + Valor da taxa de emissão do contrato. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'PRE_FIXADO' no campo 'indexer' ou quando se tratar de produto com remuneração híbrida. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '0.300000' + postFixedIndexerPercentage: + type: string + description: | + Percentual do indexador de emissão do contrato. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido de forma diferente de 'PRE_FIXADO' ou quando se tratar de produto com remuneração híbrida. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '1.100000' + rateType: + $ref: '#/components/schemas/EnumRateType' + ratePeriodicity: + $ref: '#/components/schemas/EnumRatePeriodicity' + calculation: + $ref: '#/components/schemas/EnumCalculation' + indexer: + $ref: '#/components/schemas/EnumIndexer' + indexerAdditionalInfo: + type: string + description: | + Informações adicionais do indexador + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'Outros' no campo 'indexer'. + pattern: '[\w\W\s]*' + maxLength: 50 + example: Dólar + CreditFixedIncomesTransactions: + type: object + required: + - type + - transactionType + - transactionDate + - transactionGrossValue + - transactionNetValue + - transactionId + properties: + type: + $ref: '#/components/schemas/Type' + transactionType: + $ref: '#/components/schemas/TransactionType' + transactionTypeAdditionalInfo: + $ref: '#/components/schemas/TypeAdditionalInfo' + transactionDate: + $ref: '#/components/schemas/TransactionDate' + transactionUnitPrice: + type: object + description: | + valor unitário negociado com o cliente na data de aquisição + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA' ou 'VENCIMENTO'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + minLength: 4 + example: '1000.000004' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + transactionQuantity: + $ref: '#/components/schemas/TransactionQuantity' + transactionGrossValue: + $ref: '#/components/schemas/TransactionGrossValue' + incomeTax: + type: object + description: | + Valor do imposto de renda recolhido na transação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + financialTransactionTax: + type: object + description: | + Valor do IOF recolhido na transação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + transactionNetValue: + $ref: '#/components/schemas/TransactionNetValue' + remunerationTransactionRate: + $ref: '#/components/schemas/RemunerationTransactionRate' + indexerPercentage: + $ref: '#/components/schemas/IndexerPercentage' + transactionId: + $ref: '#/components/schemas/TransactionId' + RemunerationTransactionRate: + type: string + description: | + Taxa de remuneração acordada com o cliente na contratação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '0.300000' + TransactionDate: + type: string + format: date + description: Data da movimentação + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + TransactionGrossValue: + type: object + description: 'Valor bruto da transação (Preço unitário da movimentação x Quantidade)' + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + TransactionId: + type: string + description: | + Código ou identificador único prestado pela instituição para individualizar o movimento. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + TransactionNetValue: + type: object + description: Valor líquido da transação + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + TransactionQuantity: + type: string + description: | + Quantidade de títulos envolvidos na movimentação + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA', 'VENCIMENTO', 'TRANSFERENCIA_TITULARIDADE' ou 'TRANSFERENCIA_CUSTODIA'. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.25' + TransactionType: + type: string + description: 'Compra, venda, cancelamento, vencimento, pagamento de juros, amortização, prêmio, transferência de titularidade, transferência de custódia, multa, mora e outros' + enum: + - COMPRA + - VENDA + - CANCELAMENTO + - VENCIMENTO + - PAGAMENTO_JUROS + - AMORTIZACAO + - PREMIO + - TRANSFERENCIA_TITULARIDADE + - TRANSFERENCIA_CUSTODIA + - MULTA + - MORA + - OUTROS + example: COMPRA + Type: + type: string + description: | + Tipo de movimentação na visão de investimento​: + + ENTRADA: COMPRA, CANCELAMENTO, TRANSFERENCIA_TITULARIDADE, TRANSFERENCIA_CUSTODIA, OUTROS​. + + SAIDA: VENDA, CANCELAMENTO, VENCIMENTO, PAGAMENTO_JUROS, AMORTIZACAO, PREMIO, TRANSFERENCIA_TITULARIDADE, TRANSFERENCIA_CUSTODIA, MULTA, MORA, OUTROS. ​ + + Por exemplo, para movimentação de CANCELAMENTO, tipicamente, será o type contrário ao evento originário. Ou seja, para cancelamento de COMPRA, considera-se type SAIDA; para cancelamento de VENDA, considera-se type ENTRADA. + enum: + - ENTRADA + - SAIDA + example: ENTRADA + TypeAdditionalInfo: + type: string + description: | + Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'OUTROS' no campo 'transactionType'. + maxLength: 100 + pattern: '[\w\W\s]*' + UpdatedUnitPrice: + type: object + description: valor bruto unitário atualizado na data de referência; + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + minLength: 4 + example: '1000.0400' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + VoucherPaymentIndicator: + type: string + description: | + Indicativo se há pagamento de cupom + 1. Sim + 2. Nao + enum: + - SIM + - NAO + example: SIM + VoucherPaymentPeriodicity: + type: string + description: | + Em caso de haver pagamento de cupom, descrever a periodicidade (mensal, trimestral, semestral, anual, irregular e outros) + 1. Mensal + + 2. Trimestral + + 3. Semestral + + 4. Anual + + 5. Irregular + + 6. Outros + + [Restrição] Campo de preenchimento obrigatório pelos participantes quando houver 'SIM' no campo indicativo de pagamento de cupom 'voucherPaymentIndicator'. + enum: + - MENSAL + - TRIMESTRAL + - SEMESTRAL + - ANUAL + - IRREGULAR + - OUTROS + example: MENSAL + ResponseErrorMetaSingle: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + ResponseError: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + parameters: + InvestmentId: + name: investmentId + in: path + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + example: '92792126019929200000000000000000000000000' + Authorization: + name: Authorization + in: header + description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado + required: true + schema: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + xFapiAuthDate: + name: x-fapi-auth-date + in: header + description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a RFC7231. Exemplo: Sun, 10 Sep 2017 19:43:31 UTC.' + required: false + schema: + type: string + pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$' + minLength: 29 + maxLength: 29 + xFapiCustomerIpAddress: + name: x-fapi-customer-ip-address + in: header + description: O endereço IP do usuário se estiver atualmente logado com o receptor. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiInteractionId: + name: x-fapi-interaction-id + in: header + description: Um UUID RFC4122 usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela receptora (client) e o seu valor deve ser "espelhado" pela transmissora (server) no cabeçalho de resposta. + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + xCustomerUserAgent: + name: x-customer-user-agent + in: header + description: Indica o user-agent que o usuário utiliza. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + page: + name: page + in: query + description: Número da página que está sendo requisitada (o valor da primeira página é 1). + schema: + type: integer + default: 1 + minimum: 1 + maximum: 2147483647 + format: int32 + pageSize: + name: page-size + in: query + description: Quantidade total de registros por páginas. A transmissora deve considerar entrada como 25, caso seja informado algum valor menor pela receptora. + Enquanto houver mais que 25 registros a enviar, a transmissora deve considerar o mínimo por página como 25. Somente a última página retornada (ou primeira, no caso de página única) pode conter menos de 25 registros. + Mais informações, acesse Especificações de APIs > Padrões > Paginação. + schema: + type: integer + default: 25 + minimum: 25 + format: int32 + maximum: 1000 + pagination-key: + name: pagination-key + in: query + description: 'Identificador de rechamada, utilizado para evitar a contagem de chamadas ao endpoint durante a paginação.' + schema: + type: string + maxLength: 2048 + pattern: '[\w\W\s]*' + fromTransactionDate: + name: fromTransactionDate + description: | + Data inicial de filtragem. + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2022-01-01' + toTransactionDate: + name: toTransactionDate + description: | + Data final de filtragem. + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2022-12-31' + fromTransactionDateCurrent: + name: fromTransactionDate + description: | + Data inicial de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2023-02-01' + toTransactionDateCurrent: + name: toTransactionDate + description: | + Data final de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2023-02-01' + securitySchemes: + OAuth2AuthorizationCode: + type: oauth2 + description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados. + flows: + authorizationCode: + authorizationUrl: 'https://authserver.example/authorization' + tokenUrl: 'https://authserver.example/token' + scopes: + credit-fixed-incomes: Escopo necessário para acesso à API Credit-Fixed-Incomes. O controle dos endpoints específicos é feito via permissions. + responses: + ResponseCreditFixedIncomesProductList: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseCreditFixedIncomesProductList' + ResponseCreditFixedIncomesProductIdentification: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseCreditFixedIncomesProductIdentification' + ResponseCreditFixedIncomesBalances: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseCreditFixedIncomesBalances' + ResponseCreditFixedIncomesTransactions: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseCreditFixedIncomesTransactions' + ResponseCreditFixedIncomesTransactionsCurrent: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseCreditFixedIncomesTransactionsCurrent' + BadRequest: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Forbidden: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + GatewayTimeout: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + InternalServerError: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Locked: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + MethodNotAllowed: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + NotAcceptable: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + NotFound: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TooManyRequests: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Unauthorized: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + UnprocessableEntity: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + SiteIsOverloaded: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Default: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + BadRequestWithAdditionalProperties: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + ForbiddenWithAdditionalProperties: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + GatewayTimeoutWithAdditionalProperties: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + InternalServerErrorWithAdditionalProperties: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + LockedWithAdditionalProperties: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + MethodNotAllowedWithAdditionalProperties: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotAcceptableWithAdditionalProperties: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotFoundWithAdditionalProperties: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + TooManyRequestsWithAdditionalProperties: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + UnauthorizedWithAdditionalProperties: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + UnprocessableEntityWithAdditionalProperties: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + DefaultWithAdditionalProperties: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + SiteIsOverloadedWithAdditionalProperties: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' \ No newline at end of file diff --git a/swagger-apis/credit-fixed-incomes/1.0.0-rc3.0.yml b/swagger-apis/credit-fixed-incomes/1.0.0-rc3.0.yml new file mode 100644 index 000000000..8c84494e0 --- /dev/null +++ b/swagger-apis/credit-fixed-incomes/1.0.0-rc3.0.yml @@ -0,0 +1,1717 @@ +openapi: 3.0.0 +info: + title: API Credit Fixed Incomes - Open Finance Brasil + description: | + API de informações de operações de Renda Fixa Crédito do Open Finance Brasil – Fase 4. API que retorna informações de operações de investimento do tipo Renda Fixa Crédito (Debêntures, CRI/CRA) mantidas nas instituições transmissoras por seus clientes, incluindo dados como denominação do produto, rentabilidade, quantidade, prazos, saldos em posição do cliente e movimentações financeiras. + Não possui segregação entre pessoa natural e pessoa jurídica. Requer consentimento do cliente para todos os endpoints. A exposição se dará por cada operação de renda fixa contratada pelo cliente. + version: 1.0.0-rc3.0 + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' + contact: + name: Governança do Open Finance Brasil – Especificações + email: gt-interfaces@openbankingbr.org + url: 'https://openbanking-brasil.github.io/areadesenvolvedor/' +servers: + - url: 'https://api.banco.com.br/open-banking/credit-fixed-incomes/v1' + description: Servidor de Produção + - url: 'https://apih.banco.com.br/open-banking/credit-fixed-incomes/v1' + description: Servidor de Homologação +tags: + - name: Product List + description: Obtém a lista de operações de Renda Fixa Crédito mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + - name: Product Identification + description: Obtém os dados da operação de Renda Fixa Crédito identificada por investmentId. + - name: Balances + description: Obtém a posição da operação de Renda Fixa Crédito identificada por investmentId. + - name: Transactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Crédito identificada por investmentId. + - name: Transactions Current + description: 'Obtém as movimentações recentes da operação de Renda Fixa Crédito identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' +paths: + /investments: + get: + tags: + - Product List + summary: Obtém a lista de operações de Renda Fixa Crédito mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + operationId: creditFixedIncomesGetInvestments + description: Obtém a lista de operações de Renda Fixa Crédito mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. - + parameters: + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + responses: + '200': + $ref: '#/components/responses/ResponseCreditFixedIncomesProductList' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - credit-fixed-incomes + '/investments/{investmentId}': + get: + tags: + - Product Identification + summary: Obtém os dados da operação de Renda Fixa Crédito identificada por investmentId. + operationId: creditFixedIncomesGetInvestmentsInvestmentId + description: Obtém os dados da operação de Renda Fixa Crédito identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseCreditFixedIncomesProductIdentification' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - credit-fixed-incomes + '/investments/{investmentId}/balances': + get: + tags: + - Balances + summary: Obtém a posição da operação de Renda Fixa Crédito identificada por investmentId. + operationId: creditFixedIncomesGetInvestmentsInvestmentIdBalances + description: | + Obtém a posição da operação de Renda Fixa Crédito identificada por investmentId. + + Nos casos em que não houver posição para o investimento, ou seja, quantidade de ativos e valores monetários zerados, mas o mesmo ainda estiver no prazo de exposição (até 12 meses após a última movimentação), deve se retornar status code 200 e para o payload de retorno considerar os valores abaixo. Campos não obrigatórios não devem ser retornados: + + - Valores monetários: 0.00 + - Quantidade de ativos: 0.00 + - Data e hora da última posição: mesmo conteúdo do campo requestDateTime + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseCreditFixedIncomesBalances' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - credit-fixed-incomes + '/investments/{investmentId}/transactions': + get: + tags: + - Transactions + summary: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Crédito identificada por investmentId. + operationId: creditFixedIncomesGetInvestmentsInvestmentIdTransactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Crédito identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDate' + - $ref: '#/components/parameters/toTransactionDate' + responses: + '200': + $ref: '#/components/responses/ResponseCreditFixedIncomesTransactions' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - credit-fixed-incomes + '/investments/{investmentId}/transactions-current': + get: + tags: + - Transactions Current + summary: 'Obtém as movimentações recentes da operação de Renda Fixa Crédito identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + operationId: creditFixedIncomesGetInvestmentsInvestmentIdTransactionsCurrent + description: 'Obtém as movimentações recentes da operação de Renda Fixa Crédito identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDateCurrent' + - $ref: '#/components/parameters/toTransactionDateCurrent' + responses: + '200': + $ref: '#/components/responses/ResponseCreditFixedIncomesTransactionsCurrent' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - credit-fixed-incomes +components: + schemas: + ResponseCreditFixedIncomesProductList: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/CreditFixedList' + links: + $ref: '#/components/schemas/CreditFixedIncomesLinks' + meta: + $ref: '#/components/schemas/CreditFixedIncomesMeta' + ResponseCreditFixedIncomesProductIdentification: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/CreditFixedIdentification' + links: + $ref: '#/components/schemas/CreditFixedIncomesLinks' + meta: + $ref: '#/components/schemas/CreditFixedIncomesMeta' + ResponseCreditFixedIncomesBalances: + type: object + required: + - data + - links + - meta + properties: + data: + type: object + required: + - referenceDateTime + - updatedUnitPrice + - quantity + - grossAmount + - netAmount + - incomeTax + - financialTransactionTax + - blockedBalance + - purchaseUnitPrice + properties: + referenceDateTime: + $ref: '#/components/schemas/ReferenceDateTime' + updatedUnitPrice: + $ref: '#/components/schemas/UpdatedUnitPrice' + quantity: + type: string + format: double + description: quantidade de títulos detidos na data da posição do cliente + maxLength: 24 + minLength: 4 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '15.00' + grossAmount: + $ref: '#/components/schemas/GrossAmount' + netAmount: + $ref: '#/components/schemas/NetAmount' + incomeTax: + $ref: '#/components/schemas/IncomeTax' + financialTransactionTax: + $ref: '#/components/schemas/FinancialTransactionTax' + blockedBalance: + $ref: '#/components/schemas/BlockedBalance' + purchaseUnitPrice: + $ref: '#/components/schemas/PurchaseUnitPrice' + preFixedRate: + type: string + description: | + Taxa de remuneração acordada com o cliente na contratação. + Em casos de produtos progressivos, considerar taxa vigente. + É esperado que o preenchimento deste campo pelas participantes seja enviado de acordo com o campo preFixedRate do endpoint /investment/{investmentId}. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '0.300000' + postFixedIndexerPercentage: + $ref: '#/components/schemas/PostFixedIndexerPercentage' + fine: + $ref: '#/components/schemas/Fine' + latePayment: + $ref: '#/components/schemas/LatePayment' + links: + $ref: '#/components/schemas/CreditFixedIncomesLinks' + meta: + $ref: '#/components/schemas/CreditFixedIncomesMeta' + ResponseCreditFixedIncomesTransactions: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/CreditFixedIncomesTransactions' + links: + $ref: '#/components/schemas/CreditFixedIncomesLinks' + meta: + $ref: '#/components/schemas/CreditFixedIncomesMetaTransactions' + ResponseCreditFixedIncomesTransactionsCurrent: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + type: object + required: + - type + - transactionType + - transactionDate + - transactionGrossValue + - transactionNetValue + - transactionId + properties: + type: + $ref: '#/components/schemas/Type' + transactionType: + $ref: '#/components/schemas/TransactionType' + transactionTypeAdditionalInfo: + type: string + description: | + Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'OUTROS' no campo 'transactionType'. + maxLength: 100 + pattern: '[\w\W\s]*' + transactionDate: + type: string + format: date + description: Data da movimentação + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + transactionUnitPrice: + type: object + description: | + valor unitário negociado com o cliente na data de aquisição + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA' ou 'VENCIMENTO'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + minLength: 4 + example: '1000.000004' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + transactionQuantity: + type: string + description: | + Quantidade de títulos envolvidos na movimentação + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA', 'VENCIMENTO', 'TRANSFERENCIA_TITULARIDADE' ou 'TRANSFERENCIA_CUSTODIA'. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.25' + transactionGrossValue: + $ref: '#/components/schemas/TransactionGrossValue' + incomeTax: + type: object + description: | + Valor do imposto de renda recolhido na transação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + financialTransactionTax: + type: object + description: | + Valor do IOF recolhido na transação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + transactionNetValue: + $ref: '#/components/schemas/TransactionNetValue' + remunerationTransactionRate: + $ref: '#/components/schemas/RemunerationTransactionRate' + indexerPercentage: + type: string + description: | + Percentual máximo do indexador na transação acordado com o cliente na contratação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '1.100000' + transactionId: + type: string + description: | + Código ou identificador único prestado pela instituição para individualizar o movimento. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + links: + $ref: '#/components/schemas/CreditFixedIncomesLinks' + meta: + $ref: '#/components/schemas/CreditFixedIncomesMetaTransactions' + BlockedBalance: + type: object + description: Valor não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros). + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + CreditFixedIdentification: + type: object + required: + - investmentType + - remuneration + - issueUnitPrice + - issueDate + - dueDate + - voucherPaymentIndicator + - purchaseDate + - taxExemptProduct + properties: + issuerInstitutionCnpjNumber: + type: string + description: | + CNPJ da instituição emissora. + + Caso a instituição tenha a informação, o envio será obrigatório. + maxLength: 14 + pattern: '^\d{14}$' + example: '11225860000140' + isinCode: + type: string + description: | + Código ISIN é um código universal que identifica cada valor mobiliário ou instrumento financeiro, conforme Norma ISO 6166. Caso a transmissora possua a informação o envio deste campo é obrigatório. + + [Restrição] Deve ser preenchido nos casos em que o 'clearingCode' não seja preenchido. + maxLength: 12 + pattern: '^[A-Z]{2}([A-Z0-9]){9}\d{1}$' + example: BRCST4CTF001 + investmentType: + $ref: '#/components/schemas/EnumInvestimentType' + debtorCnpjNumber: + type: string + description: | + CNPJ do devedor. Caso a transmissora possua a informação para os produtos CRI e CRA, o envio deste campo é obrigatório. + maxLength: 14 + pattern: '^\d{14}$' + example: '11225860000140' + debtorName: + type: string + description: | + Nome do devedor. Caso a transmissora possua a informação para os produtos CRI e CRA, o envio deste campo é obrigatório. + pattern: '[\w\W\s]*' + maxLength: 70 + example: Roberto Marino + taxExemptProduct: + $ref: '#/components/schemas/EnumTaxExemptProduct' + remuneration: + $ref: '#/components/schemas/Remuneration' + issueUnitPrice: + $ref: '#/components/schemas/IssueUnitPrice' + issueDate: + type: string + format: date + description: Data de emissão do título + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-16' + dueDate: + type: string + format: date + description: Data de vencimento do título + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + voucherPaymentIndicator: + $ref: '#/components/schemas/VoucherPaymentIndicator' + voucherPaymentPeriodicity: + $ref: '#/components/schemas/VoucherPaymentPeriodicity' + voucherPaymentPeriodicityAdditionalInfo: + type: string + description: | + Informações adicionais da periodicidade de pagamento de cupom + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'Outros' no campo 'voucherPaymentPeriodicity'. + maxLength: 50 + pattern: '[\w\W\s]*' + example: Diária + clearingCode: + type: string + description: | + Código de registro do ativo na Clearing. Caso a transmissora possua a informação o envio deste campo é obrigatório. + + [Restrição] Deve ser preenchido nos casos em que o 'isinCode' não seja preenchido. + maxLength: 30 + pattern: '[\w\W-]*' + example: CDB421GPXXX + purchaseDate: + type: string + format: date + description: Data de aquisição do cliente + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + gracePeriodDate: + type: string + format: date + description: | + Data até a qual o cliente não poderá resgatar antecipadamente seu investimento. + + Caso a instituição tenha a informação, o envio será obrigatório. + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-16' + CreditFixedIncomesLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + CreditFixedIncomesMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + CreditFixedIncomesMetaTransactions: + type: object + description: Meta informações referente a API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + CreditFixedList: + type: object + description: Lista de títulos de renda fixa crédito mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento + required: + - brandName + - companyCnpj + - investmentType + - investmentId + properties: + brandName: + type: string + description: 'Nome da Marca reportada pelo participante no Open Finance. Recomenda-se utilizar, sempre que possível, o mesmo nome de marca atribuído no campo do diretório Customer Friendly Server Name (Authorisation Server).' + pattern: '[\w\W\s]*' + maxLength: 80 + example: Organização A + companyCnpj: + type: string + description: 'Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. Deve-se ter apenas os números do CNPJ, sem máscara' + maxLength: 14 + pattern: '^\d{14}$' + example: '21128159000166' + investmentType: + $ref: '#/components/schemas/EnumInvestimentType' + investmentId: + type: string + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + Currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + EnumCalculation: + type: string + description: | + Base de cálculo (dias úteis ou dias corridos). + 1. dias úteis + 2. dias corridos. + + Caso a instituição tenha a informação, o envio será obrigatório. + enum: + - DIAS_UTEIS + - DIAS_CORRIDOS + example: DIAS_CORRIDOS + EnumTaxExemptProduct: + type: string + description: Indicador de um produto incentivado + enum: + - SIM + - NAO + example: SIM + EnumIndexer: + type: string + description: | + Índice utilizado como referência para a correção da rentabilidade e/ou rendimentos do ativo + 1. CDI + 2. DI + 3. TR + 4. IPCA + 5. IGP_M + 6. IGP_DI + 7. INPC + 8. BCP + 10. TLC + 11. SELIC + 12. PRE_FIXADO + 13. OUTROS + enum: + - CDI + - DI + - TR + - IPCA + - IGP_M + - IGP_DI + - INPC + - BCP + - TLC + - SELIC + - PRE_FIXADO + - OUTROS + example: CDI + EnumInvestimentType: + type: string + description: 'Especificação do ativo em questão (Debêntures, CRI ou CRA).' + enum: + - DEBENTURES + - CRI + - CRA + example: CRI + EnumRatePeriodicity: + type: string + description: | + Periodicidade da taxa de remuneração (mensal, anual, diário, semestral). + + Caso a instituição tenha a informação, o envio será obrigatório. + enum: + - MENSAL + - ANUAL + - DIARIO + - SEMESTRAL + example: MENSAL + EnumRateType: + type: string + description: | + Tipo da taxa de remuneração + 1. LINEAR + 2. EXPONENCIAL + + Caso a instituição tenha a informação, o envio será obrigatório. + enum: + - LINEAR + - EXPONENCIAL + example: LINEAR + FinancialTransactionTax: + type: object + description: | + Valor do imposto (IOF) provisionado considerando a alíquota vigente na data de referência. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + Fine: + type: object + description: | + Valor de multa devido ao atraso do pagamento acordado em contrato. + Caso a transmissora possua a informação, o envio deste campo é obrigatório. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + GrossAmount: + type: object + description: valor do investimento que se refere a quantidade x PU atualizado na data de referência + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + IncomeTax: + type: object + description: | + Valor do imposto de renda provisionado considerando a alíquota vigente na data de referência. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + IndexerPercentage: + type: string + description: | + Percentual máximo do indexador na transação acordado com o cliente na contratação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '1.100000' + IssueUnitPrice: + type: object + required: + - amount + - currency + properties: + amount: + type: string + description: Valor relacionado ao objeto. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.000004' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + LatePayment: + type: object + description: | + Valor de mora devido ao atraso do pagamento acordado em contrato. + Caso a transmissora possua a informação, o envio deste campo é obrigatório. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + NetAmount: + type: object + description: 'valor do investimento atualizado na data de referência, posterior a dedução de impostos (IOF e IR)' + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + PostFixedIndexerPercentage: + type: string + description: | + Percentual do indexador acordado com o cliente na contratação. + Em casos de produtos progressivos, considerar taxa vigente. + É esperado que o preenchimento deste campo pelas participantes seja enviado de acordo com o campo postFixedIndexerPercentagedo endpoint /investment/{investmentId}. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '1.100000' + PurchaseUnitPrice: + type: object + description: valor unitário negociado com o cliente na data de aquisição + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + minLength: 4 + example: '1000.000004' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + ReferenceDateTime: + type: string + format: date-time + description: 'data e hora da última posição consolidada disponível a que se referem os dados transacionais do cliente disponíveis nos canais eletrônicos; Na representação data deve se considerar os minutos e segundos como zero (00:00:00Z)' + maxLength: 20 + pattern: '(^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$)' + example: '2022-07-21T17:32:00Z' + Remuneration: + type: object + required: + - indexer + properties: + preFixedRate: + type: string + description: | + Valor da taxa de emissão do contrato. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'PRE_FIXADO' no campo 'indexer' ou quando se tratar de produto com remuneração híbrida. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '0.300000' + postFixedIndexerPercentage: + type: string + description: | + Percentual do indexador de emissão do contrato. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido de forma diferente de 'PRE_FIXADO' ou quando se tratar de produto com remuneração híbrida. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '1.100000' + rateType: + $ref: '#/components/schemas/EnumRateType' + ratePeriodicity: + $ref: '#/components/schemas/EnumRatePeriodicity' + calculation: + $ref: '#/components/schemas/EnumCalculation' + indexer: + $ref: '#/components/schemas/EnumIndexer' + indexerAdditionalInfo: + type: string + description: | + Informações adicionais do indexador + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'Outros' no campo 'indexer'. + pattern: '[\w\W\s]*' + maxLength: 50 + example: Dólar + CreditFixedIncomesTransactions: + type: object + required: + - type + - transactionType + - transactionDate + - transactionGrossValue + - transactionNetValue + - transactionId + properties: + type: + $ref: '#/components/schemas/Type' + transactionType: + $ref: '#/components/schemas/TransactionType' + transactionTypeAdditionalInfo: + $ref: '#/components/schemas/TypeAdditionalInfo' + transactionDate: + $ref: '#/components/schemas/TransactionDate' + transactionUnitPrice: + type: object + description: | + valor unitário negociado com o cliente na data de aquisição + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA' ou 'VENCIMENTO'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + minLength: 4 + example: '1000.000004' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + transactionQuantity: + $ref: '#/components/schemas/TransactionQuantity' + transactionGrossValue: + $ref: '#/components/schemas/TransactionGrossValue' + incomeTax: + type: object + description: | + Valor do imposto de renda recolhido na transação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + financialTransactionTax: + type: object + description: | + Valor do IOF recolhido na transação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + transactionNetValue: + $ref: '#/components/schemas/TransactionNetValue' + remunerationTransactionRate: + $ref: '#/components/schemas/RemunerationTransactionRate' + indexerPercentage: + $ref: '#/components/schemas/IndexerPercentage' + transactionId: + $ref: '#/components/schemas/TransactionId' + RemunerationTransactionRate: + type: string + description: | + Taxa de remuneração acordada com o cliente na contratação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '0.300000' + TransactionDate: + type: string + format: date + description: Data da movimentação + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + TransactionGrossValue: + type: object + description: 'Valor bruto da transação (Preço unitário da movimentação x Quantidade)' + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + TransactionId: + type: string + description: | + Código ou identificador único prestado pela instituição para individualizar o movimento. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + TransactionNetValue: + type: object + description: Valor líquido da transação + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + TransactionQuantity: + type: string + description: | + Quantidade de títulos envolvidos na movimentação + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA', 'VENCIMENTO', 'TRANSFERENCIA_TITULARIDADE' ou 'TRANSFERENCIA_CUSTODIA'. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.25' + TransactionType: + type: string + description: Compra, venda, cancelamento, vencimento, pagamento de juros, amortização, prêmio, transferência de titularidade, transferência de custódia, multa, mora e outros. Para movimentos de transferência (titularidade ou custódia) deve ser considerado o preço unitário (transactionUnitPrice) da aquisição do título. + enum: + - COMPRA + - VENDA + - CANCELAMENTO + - VENCIMENTO + - PAGAMENTO_JUROS + - AMORTIZACAO + - PREMIO + - TRANSFERENCIA_TITULARIDADE + - TRANSFERENCIA_CUSTODIA + - MULTA + - MORA + - OUTROS + example: COMPRA + Type: + type: string + description: | + Tipo de movimentação na visão de investimento​: + + ENTRADA: COMPRA, CANCELAMENTO, TRANSFERENCIA_TITULARIDADE, TRANSFERENCIA_CUSTODIA, OUTROS​. + + SAIDA: VENDA, CANCELAMENTO, VENCIMENTO, PAGAMENTO_JUROS, AMORTIZACAO, PREMIO, TRANSFERENCIA_TITULARIDADE, TRANSFERENCIA_CUSTODIA, MULTA, MORA, OUTROS. ​ + + Por exemplo, para movimentação de CANCELAMENTO, tipicamente, será o type contrário ao evento originário. Ou seja, para cancelamento de COMPRA, considera-se type SAIDA; para cancelamento de VENDA, considera-se type ENTRADA. + enum: + - ENTRADA + - SAIDA + example: ENTRADA + TypeAdditionalInfo: + type: string + description: | + Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'OUTROS' no campo 'transactionType'. + maxLength: 100 + pattern: '[\w\W\s]*' + UpdatedUnitPrice: + type: object + description: valor bruto unitário atualizado na data de referência; + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + minLength: 4 + example: '1000.0400' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + VoucherPaymentIndicator: + type: string + description: | + Indicativo se há pagamento de cupom + 1. Sim + 2. Nao + enum: + - SIM + - NAO + example: SIM + VoucherPaymentPeriodicity: + type: string + description: | + Em caso de haver pagamento de cupom, descrever a periodicidade (mensal, trimestral, semestral, anual, irregular e outros) + 1. Mensal + + 2. Trimestral + + 3. Semestral + + 4. Anual + + 5. Irregular + + 6. Outros + + [Restrição] Campo de preenchimento obrigatório pelos participantes quando houver 'SIM' no campo indicativo de pagamento de cupom 'voucherPaymentIndicator'. + enum: + - MENSAL + - TRIMESTRAL + - SEMESTRAL + - ANUAL + - IRREGULAR + - OUTROS + example: MENSAL + ResponseErrorMetaSingle: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + ResponseError: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + parameters: + InvestmentId: + name: investmentId + in: path + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + example: '92792126019929200000000000000000000000000' + Authorization: + name: Authorization + in: header + description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado + required: true + schema: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + xFapiAuthDate: + name: x-fapi-auth-date + in: header + description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a RFC7231. Exemplo: Sun, 10 Sep 2017 19:43:31 UTC.' + required: false + schema: + type: string + pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$' + minLength: 29 + maxLength: 29 + xFapiCustomerIpAddress: + name: x-fapi-customer-ip-address + in: header + description: O endereço IP do usuário se estiver atualmente logado com o receptor. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiInteractionId: + name: x-fapi-interaction-id + in: header + description: Um UUID RFC4122 usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela receptora (client) e o seu valor deve ser "espelhado" pela transmissora (server) no cabeçalho de resposta. + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + xCustomerUserAgent: + name: x-customer-user-agent + in: header + description: Indica o user-agent que o usuário utiliza. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + page: + name: page + in: query + description: Número da página que está sendo requisitada (o valor da primeira página é 1). + schema: + type: integer + default: 1 + minimum: 1 + maximum: 2147483647 + format: int32 + pageSize: + name: page-size + in: query + description: Quantidade total de registros por páginas. A transmissora deve considerar entrada como 25, caso seja informado algum valor menor pela receptora. + Enquanto houver mais que 25 registros a enviar, a transmissora deve considerar o mínimo por página como 25. Somente a última página retornada (ou primeira, no caso de página única) pode conter menos de 25 registros. + Mais informações, acesse Especificações de APIs > Padrões > Paginação. + schema: + type: integer + default: 25 + minimum: 25 + format: int32 + maximum: 1000 + pagination-key: + name: pagination-key + in: query + description: 'Identificador de rechamada, utilizado para evitar a contagem de chamadas ao endpoint durante a paginação.' + schema: + type: string + maxLength: 2048 + pattern: '[\w\W\s]*' + fromTransactionDate: + name: fromTransactionDate + description: | + Data inicial de filtragem. + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2022-01-01' + toTransactionDate: + name: toTransactionDate + description: | + Data final de filtragem. + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2022-12-31' + fromTransactionDateCurrent: + name: fromTransactionDate + description: | + Data inicial de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2023-02-01' + toTransactionDateCurrent: + name: toTransactionDate + description: | + Data final de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2023-02-01' + securitySchemes: + OAuth2AuthorizationCode: + type: oauth2 + description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados. + flows: + authorizationCode: + authorizationUrl: 'https://authserver.example/authorization' + tokenUrl: 'https://authserver.example/token' + scopes: + credit-fixed-incomes: Escopo necessário para acesso à API Credit-Fixed-Incomes. O controle dos endpoints específicos é feito via permissions. + responses: + ResponseCreditFixedIncomesProductList: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseCreditFixedIncomesProductList' + ResponseCreditFixedIncomesProductIdentification: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseCreditFixedIncomesProductIdentification' + ResponseCreditFixedIncomesBalances: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseCreditFixedIncomesBalances' + ResponseCreditFixedIncomesTransactions: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseCreditFixedIncomesTransactions' + ResponseCreditFixedIncomesTransactionsCurrent: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseCreditFixedIncomesTransactionsCurrent' + BadRequest: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Forbidden: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + GatewayTimeout: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + InternalServerError: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Locked: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + MethodNotAllowed: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + NotAcceptable: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + NotFound: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TooManyRequests: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Unauthorized: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + UnprocessableEntity: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + SiteIsOverloaded: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Default: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + BadRequestWithAdditionalProperties: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + ForbiddenWithAdditionalProperties: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + GatewayTimeoutWithAdditionalProperties: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + InternalServerErrorWithAdditionalProperties: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + LockedWithAdditionalProperties: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + MethodNotAllowedWithAdditionalProperties: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotAcceptableWithAdditionalProperties: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotFoundWithAdditionalProperties: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + TooManyRequestsWithAdditionalProperties: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + UnauthorizedWithAdditionalProperties: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + UnprocessableEntityWithAdditionalProperties: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + DefaultWithAdditionalProperties: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + SiteIsOverloadedWithAdditionalProperties: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' \ No newline at end of file diff --git a/swagger-apis/credit-fixed-incomes/1.0.0.yml b/swagger-apis/credit-fixed-incomes/1.0.0.yml new file mode 100644 index 000000000..98ca61936 --- /dev/null +++ b/swagger-apis/credit-fixed-incomes/1.0.0.yml @@ -0,0 +1,1763 @@ +openapi: 3.0.0 +info: + title: API Credit Fixed Incomes - Open Finance Brasil + description: | + API de informações de operações de Renda Fixa Crédito do Open Finance Brasil – Fase 4. API que retorna informações de operações de investimento do tipo Renda Fixa Crédito (Debêntures, CRI/CRA) mantidas nas instituições transmissoras por seus clientes, incluindo dados como denominação do produto, rentabilidade, quantidade, prazos, saldos em posição do cliente e movimentações financeiras. + Não possui segregação entre pessoa natural e pessoa jurídica. Requer consentimento do cliente para todos os endpoints. A exposição se dará por cada operação de renda fixa contratada pelo cliente. + version: 1.0.0 + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' + contact: + name: Governança do Open Finance Brasil – Especificações + email: gt-interfaces@openbankingbr.org + url: 'https://openbanking-brasil.github.io/areadesenvolvedor/' +servers: + - url: 'https://api.banco.com.br/open-banking/credit-fixed-incomes/v1' + description: Servidor de Produção + - url: 'https://apih.banco.com.br/open-banking/credit-fixed-incomes/v1' + description: Servidor de Homologação +tags: + - name: Product List + description: Obtém a lista de operações de Renda Fixa Crédito mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + - name: Product Identification + description: Obtém os dados da operação de Renda Fixa Crédito identificada por investmentId. + - name: Balances + description: Obtém a posição da operação de Renda Fixa Crédito identificada por investmentId. + - name: Transactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Crédito identificada por investmentId. + - name: Transactions Current + description: 'Obtém as movimentações recentes da operação de Renda Fixa Crédito identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' +paths: + /investments: + get: + tags: + - Product List + summary: Obtém a lista de operações de Renda Fixa Crédito mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + operationId: creditFixedIncomesGetInvestments + description: Obtém a lista de operações de Renda Fixa Crédito mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. - + parameters: + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + responses: + '200': + $ref: '#/components/responses/ResponseCreditFixedIncomesProductList' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - credit-fixed-incomes + '/investments/{investmentId}': + get: + tags: + - Product Identification + summary: Obtém os dados da operação de Renda Fixa Crédito identificada por investmentId. + operationId: creditFixedIncomesGetInvestmentsInvestmentId + description: Obtém os dados da operação de Renda Fixa Crédito identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseCreditFixedIncomesProductIdentification' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - credit-fixed-incomes + '/investments/{investmentId}/balances': + get: + tags: + - Balances + summary: Obtém a posição da operação de Renda Fixa Crédito identificada por investmentId. + operationId: creditFixedIncomesGetInvestmentsInvestmentIdBalances + description: | + Obtém a posição da operação de Renda Fixa Crédito identificada por investmentId. + + Nos casos em que não houver posição para o investimento, ou seja, quantidade de ativos e valores monetários zerados, mas o mesmo ainda estiver no prazo de exposição (até 12 meses após a última movimentação), deve se retornar status code 200 e para o payload de retorno considerar os valores abaixo. Campos não obrigatórios não devem ser retornados: + + - Valores monetários: 0.00 + - Quantidade de ativos: 0.00 + - Data e hora da última posição: mesmo conteúdo do campo requestDateTime + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseCreditFixedIncomesBalances' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - credit-fixed-incomes + '/investments/{investmentId}/transactions': + get: + tags: + - Transactions + summary: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Crédito identificada por investmentId. + operationId: creditFixedIncomesGetInvestmentsInvestmentIdTransactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Fixa Crédito identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDate' + - $ref: '#/components/parameters/toTransactionDate' + responses: + '200': + $ref: '#/components/responses/ResponseCreditFixedIncomesTransactions' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - credit-fixed-incomes + '/investments/{investmentId}/transactions-current': + get: + tags: + - Transactions Current + summary: 'Obtém as movimentações recentes da operação de Renda Fixa Crédito identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + operationId: creditFixedIncomesGetInvestmentsInvestmentIdTransactionsCurrent + description: 'Obtém as movimentações recentes da operação de Renda Fixa Crédito identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDateCurrent' + - $ref: '#/components/parameters/toTransactionDateCurrent' + responses: + '200': + $ref: '#/components/responses/ResponseCreditFixedIncomesTransactionsCurrent' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - credit-fixed-incomes +components: + schemas: + ResponseCreditFixedIncomesProductList: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/CreditFixedList' + links: + $ref: '#/components/schemas/CreditFixedIncomesProductListLinks' + meta: + $ref: '#/components/schemas/CreditFixedIncomesMeta' + ResponseCreditFixedIncomesProductIdentification: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/CreditFixedIdentification' + links: + $ref: '#/components/schemas/CreditFixedIncomesLinks' + meta: + $ref: '#/components/schemas/CreditFixedIncomesMeta' + ResponseCreditFixedIncomesBalances: + type: object + required: + - data + - links + - meta + properties: + data: + type: object + required: + - referenceDateTime + - updatedUnitPrice + - quantity + - grossAmount + - netAmount + - incomeTax + - financialTransactionTax + - blockedBalance + - purchaseUnitPrice + properties: + referenceDateTime: + $ref: '#/components/schemas/ReferenceDateTime' + updatedUnitPrice: + $ref: '#/components/schemas/UpdatedUnitPrice' + quantity: + type: string + format: double + description: quantidade de títulos detidos na data da posição do cliente + maxLength: 24 + minLength: 4 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '15.00' + grossAmount: + $ref: '#/components/schemas/GrossAmount' + netAmount: + $ref: '#/components/schemas/NetAmount' + incomeTax: + $ref: '#/components/schemas/IncomeTax' + financialTransactionTax: + $ref: '#/components/schemas/FinancialTransactionTax' + blockedBalance: + $ref: '#/components/schemas/BlockedBalance' + purchaseUnitPrice: + $ref: '#/components/schemas/PurchaseUnitPrice' + preFixedRate: + type: string + description: | + Taxa de remuneração acordada com o cliente na contratação. + Em casos de produtos progressivos, considerar taxa vigente. + É esperado que o preenchimento deste campo pelas participantes seja enviado de acordo com o campo preFixedRate do endpoint /investment/{investmentId}. + maxLength: 8 + minLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '0.300000' + postFixedIndexerPercentage: + $ref: '#/components/schemas/PostFixedIndexerPercentage' + fine: + $ref: '#/components/schemas/Fine' + latePayment: + $ref: '#/components/schemas/LatePayment' + links: + $ref: '#/components/schemas/CreditFixedIncomesLinks' + meta: + $ref: '#/components/schemas/CreditFixedIncomesMeta' + ResponseCreditFixedIncomesTransactions: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/CreditFixedIncomesTransactions' + links: + $ref: '#/components/schemas/CreditFixedIncomesLinks' + meta: + $ref: '#/components/schemas/CreditFixedIncomesMetaTransactions' + ResponseCreditFixedIncomesTransactionsCurrent: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + type: object + required: + - type + - transactionType + - transactionDate + - transactionGrossValue + - transactionNetValue + - transactionId + properties: + type: + $ref: '#/components/schemas/Type' + transactionType: + $ref: '#/components/schemas/TransactionType' + transactionTypeAdditionalInfo: + type: string + description: | + Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'OUTROS' no campo 'transactionType'. + maxLength: 100 + pattern: '[\w\W\s]*' + transactionDate: + type: string + format: date + description: Data da movimentação + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + transactionUnitPrice: + type: object + description: | + valor unitário negociado com o cliente na data de aquisição + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA' ou 'VENCIMENTO'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + minLength: 4 + example: '1000.000004' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + transactionQuantity: + type: string + description: | + Quantidade de títulos envolvidos na movimentação + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA', 'VENCIMENTO', 'TRANSFERENCIA_TITULARIDADE' ou 'TRANSFERENCIA_CUSTODIA'. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.25' + transactionGrossValue: + $ref: '#/components/schemas/TransactionGrossValue' + incomeTax: + type: object + description: | + Valor do imposto de renda recolhido na transação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + financialTransactionTax: + type: object + description: | + Valor do IOF recolhido na transação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + transactionNetValue: + $ref: '#/components/schemas/TransactionNetValue' + remunerationTransactionRate: + $ref: '#/components/schemas/RemunerationTransactionRate' + indexerPercentage: + type: string + description: | + Percentual máximo do indexador na transação acordado com o cliente na contratação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. + maxLength: 8 + minLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '1.100000' + transactionId: + type: string + description: | + Código ou identificador único prestado pela instituição para individualizar o movimento. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + links: + $ref: '#/components/schemas/CreditFixedIncomesLinks' + meta: + $ref: '#/components/schemas/CreditFixedIncomesMetaTransactions' + BlockedBalance: + type: object + description: Valor não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros). Prazo de carência não é considerado como bloqueio. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + CreditFixedIdentification: + type: object + required: + - investmentType + - remuneration + - issueUnitPrice + - issueDate + - dueDate + - voucherPaymentIndicator + - purchaseDate + - taxExemptProduct + properties: + issuerInstitutionCnpjNumber: + type: string + description: | + CNPJ da instituição emissora. + + Caso a instituição tenha a informação, o envio será obrigatório. + maxLength: 14 + pattern: '^\d{14}$' + example: '11225860000140' + isinCode: + type: string + description: | + Código ISIN é um código universal que identifica cada valor mobiliário ou instrumento financeiro, conforme Norma ISO 6166. Caso a transmissora possua a informação o envio deste campo é obrigatório. + + [Restrição] Deve ser preenchido nos casos em que o 'clearingCode' não seja preenchido. + maxLength: 12 + pattern: '^[A-Z]{2}([A-Z0-9]){9}\d{1}$' + example: BRCST4CTF001 + investmentType: + $ref: '#/components/schemas/EnumInvestimentType' + debtorCnpjNumber: + type: string + description: | + CNPJ do devedor. Caso a transmissora possua a informação para os produtos CRI e CRA, o envio deste campo é obrigatório. + maxLength: 14 + pattern: '^\d{14}$' + example: '11225860000140' + debtorName: + type: string + description: | + Nome do devedor. Caso a transmissora possua a informação para os produtos CRI e CRA, o envio deste campo é obrigatório. + pattern: '[\w\W\s]*' + maxLength: 70 + example: Roberto Marino + taxExemptProduct: + $ref: '#/components/schemas/EnumTaxExemptProduct' + remuneration: + $ref: '#/components/schemas/Remuneration' + issueUnitPrice: + $ref: '#/components/schemas/IssueUnitPrice' + issueDate: + type: string + format: date + description: Data de emissão do título + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-16' + dueDate: + type: string + format: date + description: Data de vencimento do título + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + voucherPaymentIndicator: + $ref: '#/components/schemas/VoucherPaymentIndicator' + voucherPaymentPeriodicity: + $ref: '#/components/schemas/VoucherPaymentPeriodicity' + voucherPaymentPeriodicityAdditionalInfo: + type: string + description: | + Informações adicionais da periodicidade de pagamento de cupom + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'Outros' no campo 'voucherPaymentPeriodicity'. + maxLength: 50 + pattern: '[\w\W\s]*' + example: Diária + clearingCode: + type: string + description: | + Código de registro do ativo na Clearing. Caso a transmissora possua a informação o envio deste campo é obrigatório. + + [Restrição] Deve ser preenchido nos casos em que o 'isinCode' não seja preenchido. + maxLength: 30 + pattern: '[\w\W-]*' + example: CDB421GPXXX + purchaseDate: + type: string + format: date + description: Data de aquisição do cliente + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + gracePeriodDate: + type: string + format: date + description: | + Data até a qual o cliente não poderá resgatar antecipadamente seu investimento. + + Caso a instituição tenha a informação, o envio será obrigatório. + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-16' + CreditFixedIncomesProductListLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + last: + type: string + format: uri + maxLength: 2000 + description: URI da última página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%.\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%\+.~#?&\/\/=]*)$' + CreditFixedIncomesLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + CreditFixedIncomesMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + CreditFixedIncomesMetaTransactions: + type: object + description: Meta informações referente a API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + CreditFixedList: + type: object + description: Lista de títulos de renda fixa crédito mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento + required: + - brandName + - companyCnpj + - investmentType + - investmentId + properties: + brandName: + type: string + description: 'Nome da Marca reportada pelo participante no Open Finance. Recomenda-se utilizar, sempre que possível, o mesmo nome de marca atribuído no campo do diretório Customer Friendly Server Name (Authorisation Server).' + pattern: '[\w\W\s]*' + maxLength: 80 + example: Organização A + companyCnpj: + type: string + description: 'Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. Deve-se ter apenas os números do CNPJ, sem máscara' + maxLength: 14 + pattern: '^\d{14}$' + example: '21128159000166' + investmentType: + $ref: '#/components/schemas/EnumInvestimentType' + investmentId: + type: string + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + Currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + EnumCalculation: + type: string + description: | + Base de cálculo (dias úteis ou dias corridos). + 1. dias úteis + 2. dias corridos. + + Caso a instituição tenha a informação, o envio será obrigatório. + enum: + - DIAS_UTEIS + - DIAS_CORRIDOS + example: DIAS_CORRIDOS + EnumTaxExemptProduct: + type: string + description: Indicador de um produto incentivado + enum: + - SIM + - NAO + example: SIM + EnumIndexer: + type: string + description: | + Índice utilizado como referência para a correção da rentabilidade e/ou rendimentos do ativo + 1. CDI + 2. DI + 3. TR + 4. IPCA + 5. IGP_M + 6. IGP_DI + 7. INPC + 8. BCP + 10. TLC + 11. SELIC + 12. PRE_FIXADO + 13. OUTROS + enum: + - CDI + - DI + - TR + - IPCA + - IGP_M + - IGP_DI + - INPC + - BCP + - TLC + - SELIC + - PRE_FIXADO + - OUTROS + example: CDI + EnumInvestimentType: + type: string + description: 'Especificação do ativo em questão (Debêntures, CRI ou CRA).' + enum: + - DEBENTURES + - CRI + - CRA + example: CRI + EnumRatePeriodicity: + type: string + description: | + Periodicidade da taxa de remuneração (mensal, anual, diário, semestral). + + Caso a instituição tenha a informação, o envio será obrigatório. + enum: + - MENSAL + - ANUAL + - DIARIO + - SEMESTRAL + example: MENSAL + EnumRateType: + type: string + description: | + Tipo da taxa de remuneração + 1. LINEAR + 2. EXPONENCIAL + + Caso a instituição tenha a informação, o envio será obrigatório. + enum: + - LINEAR + - EXPONENCIAL + example: LINEAR + FinancialTransactionTax: + type: object + description: | + Valor do imposto (IOF) provisionado considerando a alíquota vigente na data de referência. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + Fine: + type: object + description: | + Valor de multa devido ao atraso do pagamento acordado em contrato. + Caso a transmissora possua a informação, o envio deste campo é obrigatório. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + GrossAmount: + type: object + description: valor do investimento que se refere a quantidade x PU atualizado na data de referência + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + IncomeTax: + type: object + description: | + Valor do imposto de renda provisionado considerando a alíquota vigente na data de referência. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + IndexerPercentage: + type: string + description: | + Percentual máximo do indexador na transação acordado com o cliente na contratação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. + maxLength: 8 + minLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '1.100000' + IssueUnitPrice: + type: object + required: + - amount + - currency + properties: + amount: + type: string + description: Valor relacionado ao objeto. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.000004' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + LatePayment: + type: object + description: | + Valor de mora devido ao atraso do pagamento acordado em contrato. + Caso a transmissora possua a informação, o envio deste campo é obrigatório. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + NetAmount: + type: object + description: 'valor do investimento atualizado na data de referência, posterior a dedução de impostos (IOF e IR)' + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + PostFixedIndexerPercentage: + type: string + description: | + Percentual do indexador acordado com o cliente na contratação. + Em casos de produtos progressivos, considerar taxa vigente. + É esperado que o preenchimento deste campo pelas participantes seja enviado de acordo com o campo postFixedIndexerPercentagedo endpoint /investment/{investmentId}. + maxLength: 8 + minLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '1.100000' + PurchaseUnitPrice: + type: object + description: valor unitário negociado com o cliente na data de aquisição + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + minLength: 4 + example: '1000.000004' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + ReferenceDateTime: + type: string + format: date-time + description: 'data e hora da última posição consolidada disponível a que se referem os dados transacionais do cliente disponíveis nos canais eletrônicos; Na representação data deve se considerar os minutos e segundos como zero (00:00:00Z)' + maxLength: 20 + pattern: '(^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$)' + example: '2022-07-21T17:32:00Z' + Remuneration: + type: object + required: + - indexer + properties: + preFixedRate: + type: string + description: | + Valor da taxa de emissão do contrato. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'PRE_FIXADO' no campo 'indexer' ou quando se tratar de produto com remuneração híbrida. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '0.300000' + postFixedIndexerPercentage: + type: string + description: | + Percentual do indexador de emissão do contrato. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido de forma diferente de 'PRE_FIXADO' ou quando se tratar de produto com remuneração híbrida. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '1.100000' + rateType: + $ref: '#/components/schemas/EnumRateType' + ratePeriodicity: + $ref: '#/components/schemas/EnumRatePeriodicity' + calculation: + $ref: '#/components/schemas/EnumCalculation' + indexer: + $ref: '#/components/schemas/EnumIndexer' + indexerAdditionalInfo: + type: string + description: | + Informações adicionais do indexador + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'Outros' no campo 'indexer'. + pattern: '[\w\W\s]*' + maxLength: 50 + example: Dólar + CreditFixedIncomesTransactions: + type: object + required: + - type + - transactionType + - transactionDate + - transactionGrossValue + - transactionNetValue + - transactionId + properties: + type: + $ref: '#/components/schemas/Type' + transactionType: + $ref: '#/components/schemas/TransactionType' + transactionTypeAdditionalInfo: + $ref: '#/components/schemas/TypeAdditionalInfo' + transactionDate: + $ref: '#/components/schemas/TransactionDate' + transactionUnitPrice: + type: object + description: | + valor unitário negociado com o cliente na data de aquisição + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA' ou 'VENCIMENTO'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + minLength: 4 + example: '1000.000004' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + transactionQuantity: + $ref: '#/components/schemas/TransactionQuantity' + transactionGrossValue: + $ref: '#/components/schemas/TransactionGrossValue' + incomeTax: + type: object + description: | + Valor do imposto de renda recolhido na transação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + financialTransactionTax: + type: object + description: | + Valor do IOF recolhido na transação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + transactionNetValue: + $ref: '#/components/schemas/TransactionNetValue' + remunerationTransactionRate: + $ref: '#/components/schemas/RemunerationTransactionRate' + indexerPercentage: + $ref: '#/components/schemas/IndexerPercentage' + transactionId: + $ref: '#/components/schemas/TransactionId' + RemunerationTransactionRate: + type: string + description: | + Taxa de remuneração acordada com o cliente na contratação. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. + maxLength: 8 + minLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '0.300000' + TransactionDate: + type: string + format: date + description: Data da movimentação + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + TransactionGrossValue: + type: object + description: 'Valor bruto da transação (Preço unitário da movimentação x Quantidade)' + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + TransactionId: + type: string + description: | + Código ou identificador único prestado pela instituição para individualizar o movimento. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + TransactionNetValue: + type: object + description: Valor líquido da transação + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + minLength: 4 + example: '1000.04' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + TransactionQuantity: + type: string + description: | + Quantidade de títulos envolvidos na movimentação + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA', 'VENCIMENTO', 'TRANSFERENCIA_TITULARIDADE' ou 'TRANSFERENCIA_CUSTODIA'. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.25' + TransactionType: + type: string + description: Compra, venda, cancelamento, vencimento, pagamento de juros, amortização, prêmio, transferência de titularidade, transferência de custódia, multa, mora e outros. Para movimentos de transferência (titularidade ou custódia) deve ser considerado o preço unitário (transactionUnitPrice) da aquisição do título. + enum: + - COMPRA + - VENDA + - CANCELAMENTO + - VENCIMENTO + - PAGAMENTO_JUROS + - AMORTIZACAO + - PREMIO + - TRANSFERENCIA_TITULARIDADE + - TRANSFERENCIA_CUSTODIA + - MULTA + - MORA + - OUTROS + example: COMPRA + Type: + type: string + description: | + Tipo de movimentação na visão de investimento​: + + ENTRADA: COMPRA, CANCELAMENTO, TRANSFERENCIA_TITULARIDADE, TRANSFERENCIA_CUSTODIA, OUTROS​. + + SAIDA: VENDA, CANCELAMENTO, VENCIMENTO, PAGAMENTO_JUROS, AMORTIZACAO, PREMIO, TRANSFERENCIA_TITULARIDADE, TRANSFERENCIA_CUSTODIA, MULTA, MORA, OUTROS. ​ + + Por exemplo, para movimentação de CANCELAMENTO, tipicamente, será o type contrário ao evento originário. Ou seja, para cancelamento de COMPRA, considera-se type SAIDA; para cancelamento de VENDA, considera-se type ENTRADA. + enum: + - ENTRADA + - SAIDA + example: ENTRADA + TypeAdditionalInfo: + type: string + description: | + Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio + [Restrição] Campo de preenchimento obrigatório pelas participantes quando houver 'OUTROS' no campo 'transactionType'. + maxLength: 100 + pattern: '[\w\W\s]*' + UpdatedUnitPrice: + type: object + description: valor bruto unitário atualizado na data de referência; + required: + - amount + - currency + properties: + amount: + type: string + format: double + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + minLength: 4 + example: '1000.0400' + description: Valor relacionado ao objeto. + currency: + $ref: '#/components/schemas/Currency' + VoucherPaymentIndicator: + type: string + description: | + Indicativo se há pagamento de cupom + 1. Sim + 2. Nao + enum: + - SIM + - NAO + example: SIM + VoucherPaymentPeriodicity: + type: string + description: | + Em caso de haver pagamento de cupom, descrever a periodicidade (mensal, trimestral, semestral, anual, irregular e outros) + 1. Mensal + + 2. Trimestral + + 3. Semestral + + 4. Anual + + 5. Irregular + + 6. Outros + + [Restrição] Campo de preenchimento obrigatório pelos participantes quando houver 'SIM' no campo indicativo de pagamento de cupom 'voucherPaymentIndicator'. + enum: + - MENSAL + - TRIMESTRAL + - SEMESTRAL + - ANUAL + - IRREGULAR + - OUTROS + example: MENSAL + ResponseErrorMetaSingle: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + ResponseError: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + parameters: + InvestmentId: + name: investmentId + in: path + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + example: '92792126019929200000000000000000000000000' + Authorization: + name: Authorization + in: header + description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado + required: true + schema: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + xFapiAuthDate: + name: x-fapi-auth-date + in: header + description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a RFC7231. Exemplo: Sun, 10 Sep 2017 19:43:31 UTC.' + required: false + schema: + type: string + pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$' + minLength: 29 + maxLength: 29 + xFapiCustomerIpAddress: + name: x-fapi-customer-ip-address + in: header + description: O endereço IP do usuário se estiver atualmente logado com o receptor. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiInteractionId: + name: x-fapi-interaction-id + in: header + description: Um UUID RFC4122 usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela receptora (client) e o seu valor deve ser "espelhado" pela transmissora (server) no cabeçalho de resposta. + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + xCustomerUserAgent: + name: x-customer-user-agent + in: header + description: Indica o user-agent que o usuário utiliza. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + page: + name: page + in: query + description: Número da página que está sendo requisitada (o valor da primeira página é 1). + schema: + type: integer + default: 1 + minimum: 1 + maximum: 2147483647 + format: int32 + pageSize: + name: page-size + in: query + description: Quantidade total de registros por páginas. A transmissora deve considerar entrada como 25, caso seja informado algum valor menor pela receptora. + Enquanto houver mais que 25 registros a enviar, a transmissora deve considerar o mínimo por página como 25. Somente a última página retornada (ou primeira, no caso de página única) pode conter menos de 25 registros. + Mais informações, acesse Especificações de APIs > Padrões > Paginação. + schema: + type: integer + default: 25 + minimum: 25 + format: int32 + maximum: 1000 + pagination-key: + name: pagination-key + in: query + description: 'Identificador de rechamada, utilizado para evitar a contagem de chamadas ao endpoint durante a paginação.' + schema: + type: string + maxLength: 2048 + pattern: '[\w\W\s]*' + fromTransactionDate: + name: fromTransactionDate + description: | + Data inicial de filtragem. + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2022-01-01' + toTransactionDate: + name: toTransactionDate + description: | + Data final de filtragem. + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2022-12-31' + fromTransactionDateCurrent: + name: fromTransactionDate + description: | + Data inicial de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2023-02-01' + toTransactionDateCurrent: + name: toTransactionDate + description: | + Data final de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2023-02-01' + securitySchemes: + OAuth2AuthorizationCode: + type: oauth2 + description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados. + flows: + authorizationCode: + authorizationUrl: 'https://authserver.example/authorization' + tokenUrl: 'https://authserver.example/token' + scopes: + credit-fixed-incomes: Escopo necessário para acesso à API Credit-Fixed-Incomes. O controle dos endpoints específicos é feito via permissions. + responses: + ResponseCreditFixedIncomesProductList: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseCreditFixedIncomesProductList' + ResponseCreditFixedIncomesProductIdentification: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseCreditFixedIncomesProductIdentification' + ResponseCreditFixedIncomesBalances: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseCreditFixedIncomesBalances' + ResponseCreditFixedIncomesTransactions: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseCreditFixedIncomesTransactions' + ResponseCreditFixedIncomesTransactionsCurrent: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseCreditFixedIncomesTransactionsCurrent' + BadRequest: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Forbidden: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + GatewayTimeout: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + InternalServerError: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Locked: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + MethodNotAllowed: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + NotAcceptable: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + NotFound: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TooManyRequests: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Unauthorized: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + UnprocessableEntity: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + SiteIsOverloaded: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Default: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + BadRequestWithAdditionalProperties: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + ForbiddenWithAdditionalProperties: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + GatewayTimeoutWithAdditionalProperties: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + InternalServerErrorWithAdditionalProperties: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + LockedWithAdditionalProperties: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + MethodNotAllowedWithAdditionalProperties: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotAcceptableWithAdditionalProperties: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotFoundWithAdditionalProperties: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + TooManyRequestsWithAdditionalProperties: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + UnauthorizedWithAdditionalProperties: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + UnprocessableEntityWithAdditionalProperties: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + DefaultWithAdditionalProperties: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + SiteIsOverloadedWithAdditionalProperties: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' \ No newline at end of file diff --git a/swagger-apis/credit-fixed-incomes/index.html b/swagger-apis/credit-fixed-incomes/index.html index 00bbf6e2f..f9b97cb8e 100644 --- a/swagger-apis/credit-fixed-incomes/index.html +++ b/swagger-apis/credit-fixed-incomes/index.html @@ -45,8 +45,11 @@ window.onload = function() { // Begin Swagger UI call region const ui = SwaggerUIBundle({ - urls: [ {"name": "1.0.0-rc1.0", "url": "./1.0.0-rc1.0.yml"}], - "urls.primaryName": "1.0.0-rc1.0", // default spec + urls: [ {"name": "1.0.0-rc1.0", "url": "./1.0.0-rc1.0.yml"}, + {"name": "1.0.0-rc2.0", "url": "./1.0.0-rc2.0.yml"}, + {"name": "1.0.0-rc3.0", "url": "./1.0.0-rc3.0.yml"}, + {"name": "1.0.0", "url": "./1.0.0.yml"}], + "urls.primaryName": "1.0.0", // default spec dom_id: '#swagger-ui', deepLinking: true, supportedSubmitMethods:[], diff --git a/swagger-apis/funds/1.0.0-rc2.0.yml b/swagger-apis/funds/1.0.0-rc2.0.yml new file mode 100644 index 000000000..9675ab5ed --- /dev/null +++ b/swagger-apis/funds/1.0.0-rc2.0.yml @@ -0,0 +1,1618 @@ +openapi: 3.0.0 +info: + title: API Funds - Open Finance Brasil + description: | + API de informações de operações de Fundos de Investimento Open Finance Brasil – Fase 4. + API que retorna informações de operações de investimento do tipo Fundos de Investimento mantidas nas instituições transmissoras por seus clientes, incluindo dados como informações do produto, quantidade, saldos em posição do cliente e movimentações financeiras. + Não possui segregação entre pessoa natural e pessoa jurídica. Requer consentimento do cliente para todos os endpoints. + Devem ser considerados como escopo de exposição todos os fundos de investimento classificados como: Renda Fixa, Ações, Multimercado e Cambial. + Para identificação do produto e posição do cliente, a exposição será de forma consolidada por Fundo de Investimento. + Para movimentações, a exposição se dará pela Ordem do Cliente, por exemplo, uma Ordem de Resgate é compartilhada como uma única movimentação, mesmo que esteja associada a diferentes Certificados (Cautelas). + + As instituições podem apresentar cenários distintos no que diz respeito ao sincronismo entre posição `/balances` e movimentação `/transactions` e `/transactions-current` da API: + + - Algumas instituições refletem movimentações ainda não convertidas na posição do cliente em seus canais eletrônicos. Isso implica que pode ocorrer compartilhamento de posição atualizada, cujas movimentações relacionadas serão expostas no ecossistema apenas após a conversão das mesmas; + + - Outras instituições refletem na posição apenas movimentações convertidas nos seus canais eletrônicos. Isso implica que o compartilhamento da posição em relação às movimentações é feito de forma sincronizada no ecossistema. + version: 1.0.0-rc2.0 + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' + contact: + name: Governança do Open Finance Brasil – Especificações + email: gt-interfaces@openbankingbr.org + url: 'https://openbanking-brasil.github.io/areadesenvolvedor/' +servers: + - url: 'https://api.banco.com.br/open-banking/funds/v1' + description: Servidor de Produção + - url: 'https://apih.banco.com.br/open-banking/funds/v1' + description: Servidor de Homologação +tags: + - name: Product List + description: Obtém a lista de operações de Fundos de Investimento mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + - name: Product Identification + description: Obtém os dados da operação de Fundos de Investimento identificada por investmentId. + - name: Balances + description: Obtém a posição da operação de Fundos de Investimento identificada por investmentId. + - name: Transactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Fundos de Investimento identificada por investmentId. + - name: Transactions Current + description: 'Obtém as movimentações recentes da operação de Fundos de Investimento identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' +paths: + /investments: + get: + tags: + - Product List + summary: Obtém a lista de operações de Fundos de Investimento mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + operationId: fundsGetInvestments + description: Obtém a lista de operações de Fundos de Investimento mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + parameters: + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + responses: + '200': + $ref: '#/components/responses/OkResponseFundsProductList' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - funds + '/investments/{investmentId}': + get: + tags: + - Product Identification + summary: Obtém os dados da operação de Fundos de Investimento identificada por investmentId. + operationId: fundsGetInvestmentsInvestmentId + description: Obtém os dados da operação de Fundos de Investimento identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/OkResponseFundsProductIdentification' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - funds + '/investments/{investmentId}/balances': + get: + tags: + - Balances + summary: Obtém a posição da operação de Fundos de Investimento identificada por investmentId. + operationId: fundsGetInvestmentsInvestmentIdBalances + description: Obtém a posição da operação de Fundos de Investimento identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseFundsBalances' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - funds + '/investments/{investmentId}/transactions': + get: + tags: + - Transactions + summary: Obtém as movimentações históricas (últimos 12 meses) da operação de Fundos de Investimento identificada por investmentId. + operationId: fundsGetInvestmentsInvestmentIdTransactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Fundos de Investimento identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDate' + - $ref: '#/components/parameters/toTransactionDate' + responses: + '200': + $ref: '#/components/responses/OKResponseFundsTransactions' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - funds + '/investments/{investmentId}/transactions-current': + get: + tags: + - Transactions Current + summary: 'Obtém as movimentações recentes da operação de Fundos de Investimento identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + operationId: fundsGetInvestmentsInvestmentIdTransactionsCurrent + description: 'Obtém as movimentações recentes da operação de Fundos de Investimento identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDateCurrent' + - $ref: '#/components/parameters/toTransactionDateCurrent' + responses: + '200': + $ref: '#/components/responses/OKResponseFundsTransactionsCurrent' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - funds +components: + schemas: + ResponseFundsProductList: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseFundsProductListData' + links: + $ref: '#/components/schemas/FundsLinks' + meta: + $ref: '#/components/schemas/FundsMeta' + additionalProperties: false + ResponseFundsProductIdentification: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/ResponseFundsProductIdentificationData' + links: + $ref: '#/components/schemas/FundsLinks' + meta: + $ref: '#/components/schemas/FundsMeta' + additionalProperties: false + ResponseFundsBalances: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/ResponseFundsBalanceData' + links: + $ref: '#/components/schemas/FundsLinks' + meta: + $ref: '#/components/schemas/FundsMeta' + additionalProperties: false + ResponseFundsTransactions: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseFundsTransactionsData' + links: + $ref: '#/components/schemas/FundsLinks' + meta: + $ref: '#/components/schemas/MetaSingle' + additionalProperties: false + ResponseFundsTransactionsCurrent: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseFundsTransactionsCurrentData' + links: + $ref: '#/components/schemas/FundsLinks' + meta: + $ref: '#/components/schemas/MetaSingle' + additionalProperties: false + ResponseFundsProductListData: + type: object + description: Lista de fundos de investimento mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + required: + - brandName + - companyCnpj + - investmentId + properties: + brandName: + type: string + description: 'Nome da Marca reportada pelo participante no Open Finance. Recomenda-se utilizar, sempre que possível, o mesmo nome de marca atribuído no campo do diretório Customer Friendly Server Name (Authorisation Server).' + pattern: '[\w\W\s]*' + example: Organização A + maxLength: 80 + companyCnpj: + type: string + description: 'Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. Deve-se ter apenas os números do CNPJ, sem máscara.' + maxLength: 14 + pattern: '^\d{14}$' + example: '21128159000166' + anbimaCategory: + type: string + description: | + Conforme classificação ANBIMA, que segue a deliberação 77 da ANBIMA. + + – Renda Fixa + + – Ações + + – Multimercado + + – Cambial + + https://www.anbima.com.br/data/files/5A/44/2C/B7/8411B510CD3B4DA568A80AC2/DeliberacaoN77-Diretriz-de-Classificacao-de-Fundos.pdf + enum: + - RENDA_FIXA + - ACOES + - MULTIMERCADO + - CAMBIAL + example: RENDA_FIXA + anbimaClass: + type: string + description: Campo necessário para aderência a Resolução CVM175. Aguardando definições de mercado. Deve se tratar de campo do tipo enum. + maxLength: 70 + pattern: '[\w\W\s]*' + anbimaSubclass: + type: string + description: Campo necessário para aderência a Resolução CVM175. Aguardando definições de mercado. Deve se tratar de campo do tipo enum. + maxLength: 70 + pattern: '[\w\W\s]*' + investmentId: + type: string + description: 'Identifica de forma única o relacionamento do cliente com o fundo, mantendo as regras de imutabilidade dentro da instituição transmissora.' + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + additionalProperties: false + ResponseFundsProductIdentificationData: + type: object + description: Informações do produto de fundo de investimento a que se refere investmentId. + required: + - name + - cnpjNumber + properties: + name: + type: string + description: Nome oficial do fundo de investimento conforme exibido para os clientes nos canais eletrônicos. + maxLength: 250 + example: CONSTELLATION MASTER FIA + cnpjNumber: + type: string + description: CNPJ do fundo de investimento. + maxLength: 14 + pattern: '^\d{14}$' + example: '11225860000140' + isinCode: + type: string + description: | + Código universal que identifica cada valor mobiliário ou instrumento financeiro, conforme Norma ISO 6166. + + DEFINIÇÃO: O ISIN (International Securities Identification Number) é um código que identifica um valor mobiliário, conforme a norma ISO 6166. + + ESTRUTURA: O ISIN é um código alfanumérico que possui 12 caracteres com a seguinte estrutura: + - Um prefixo, composto de 2 caracteres alfa, que identifica o código do país (Norma ISO 3166); + - O número básico, composto de 9 caracteres alfabéticos ou numéricos em sua extensão; + - Um dígito numérico de controle. + maxLength: 12 + minLength: 12 + pattern: '^[A-Z]{2}([A-Z0-9]){9}\d{1}$' + example: BRCST4CTF001 + anbimaCategory: + type: string + description: | + Conforme classificação ANBIMA, que segue a deliberação 77 da ANBIMA. + + – Renda Fixa + + – Ações + + – Multimercado + + – Cambial + + https://www.anbima.com.br/data/files/5A/44/2C/B7/8411B510CD3B4DA568A80AC2/DeliberacaoN77-Diretriz-de-Classificacao-de-Fundos.pdf + enum: + - RENDA_FIXA + - ACOES + - MULTIMERCADO + - CAMBIAL + example: RENDA_FIXA + anbimaClass: + type: string + description: Campo necessário para aderência a Resolução CVM175. Aguardando definições de mercado. Deve se tratar de campo do tipo enum. + maxLength: 70 + pattern: '[\w\W\s]*' + anbimaSubclass: + type: string + description: Campo necessário para aderência a Resolução CVM175. Aguardando definições de mercado. Deve se tratar de campo do tipo enum. + maxLength: 70 + pattern: '[\w\W\s]*' + additionalProperties: false + ResponseFundsBalanceData: + type: object + description: Informações da posição do fundo de investimento a que se refere investmentId. + required: + - referenceDate + - grossAmount + - netAmount + - incomeTaxProvision + - financialTransactionTaxProvision + - blockedAmount + - quotaQuantity + - quotaGrossPriceValue + properties: + referenceDate: + type: string + format: date + description: Data da última posição consolidada disponível a que se referem os dados transacionais do cliente disponíveis nos canais eletrônicos. + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2023-01-07' + grossAmount: + $ref: '#/components/schemas/FundsBalancesGrossAmount' + netAmount: + $ref: '#/components/schemas/FundsBalancesNetAmount' + incomeTaxProvision: + $ref: '#/components/schemas/FundsBalancesIncomeTaxProvision' + financialTransactionTaxProvision: + $ref: '#/components/schemas/FundsBalancesFinancialTransactionTaxProvision' + blockedAmount: + $ref: '#/components/schemas/FundsBalancesBlockedAmount' + quotaQuantity: + type: string + format: double + description: Quantidade de cotas detidas em posição do cliente . + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + example: '42.25' + quotaGrossPriceValue: + $ref: '#/components/schemas/FundsBalancesQuotaGrossPriceValue' + ResponseFundsTransactionsData: + type: object + description: Informações da posição do fundo de investimento a que se refere investmentId. + required: + - transactionId + - type + - transactionType + - transactionConversionDate + - transactionQuotaPrice + - transactionQuotaQuantity + - transactionValue + - transactionGrossValue + properties: + transactionId: + type: string + description: Código ou identificador único prestado pela instituição que mantém a representação individual do movimento na posição do fundo. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + type: + $ref: '#/components/schemas/EnumFundsTransactionsType' + transactionType: + $ref: '#/components/schemas/EnumFundsTransactionsTransactionType' + transactionTypeAdditionalInfo: + type: string + description: | + Informação adicional do tipo do motivo, para preenchimento no caso de movimentações não delimitadas no domínio. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com o valor 'OUTROS'. + maxLength: 100 + pattern: '[\w\W\s]*' + transactionConversionDate: + type: string + format: date + description: Data da conversão da transação de movimentação do fundo de investimento. + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2023-01-07' + transactionQuotaPrice: + type: object + description: | + É o valor da cota utilizada na conversão para a realização da movimentação do cliente no fundo, conforme a regra prevista em regulamento - valor pode ser negativo. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 25 + pattern: '^-?\d{1,15}\.\d{2,8}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionQuotaQuantity: + type: string + format: double + description: | + Número de cotas convertidas na data da movimentação. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.25' + transactionValue: + type: object + description: Valor da movimentação. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionGrossValue: + type: object + description: | + Valor da movimentação que se refere a quantidade da cota x valor da cota da movimentação. + Nos casos em que não houver movimentação de cotas, por exemplo: amortização, não considerar a regra descrita. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + incomeTax: + type: object + description: | + Valor do Imposto de Renda (IR) retido na fonte considerando a alíquota vigente na data da movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + financialTransactionTax: + type: object + description: | + Valor do Imposto sobre Operações Financeiras (IOF) retido na fonte considerando a alíquota vigente na data da movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionExitFee: + type: object + description: | + Valor da taxa de saída considerado na movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionNetValue: + type: object + description: | + Valor líquido da movimentação posterior à dedução de impostos (IOF e IR) e taxa de saída. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + additionalProperties: false + ResponseFundsTransactionsCurrentData: + type: object + description: Informações da posição do fundo de investimento a que se refere investmentId. + required: + - transactionId + - type + - transactionType + - transactionConversionDate + - transactionQuotaPrice + - transactionQuotaQuantity + - transactionValue + - transactionGrossValue + properties: + transactionId: + type: string + description: Código ou identificador único prestado pela instituição que mantém a representação individual do movimento na posição do fundo. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + type: + $ref: '#/components/schemas/EnumFundsTransactionsCurrentType' + transactionType: + $ref: '#/components/schemas/EnumFundsTransactionsCurrentTransactionType' + transactionTypeAdditionalInfo: + type: string + description: | + Informação adicional do tipo do motivo, para preenchimento no caso de movimentações não delimitadas no domínio. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com o valor 'OUTROS'. + maxLength: 100 + pattern: '[\w\W\s]*' + transactionConversionDate: + type: string + format: date + description: Data da conversão da transação de movimentação do fundo de investimento. + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2023-01-07' + transactionQuotaPrice: + type: object + description: | + É o valor da cota utilizada na conversão para a realização da movimentação do cliente no fundo, conforme a regra prevista em regulamento - valor pode ser negativo. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 25 + pattern: '^-?\d{1,15}\.\d{2,8}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionQuotaQuantity: + type: string + format: double + description: | + Número de cotas convertidas na data da movimentação. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.25' + transactionValue: + type: object + description: Valor da movimentação. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionGrossValue: + type: object + description: | + Valor da movimentação que se refere a quantidade da cota x valor da cota da movimentação. + Nos casos em que não houver movimentação de cotas, por exemplo: amortização, não considerar a regra descrita. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + incomeTax: + type: object + description: | + Valor do Imposto de Renda (IR) retido na fonte considerando a alíquota vigente na data da movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + financialTransactionTax: + type: object + description: | + Valor do Imposto sobre Operações Financeiras (IOF) retido na fonte considerando a alíquota vigente na data da movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionExitFee: + type: object + description: | + Valor da taxa de saída considerado na movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionNetValue: + type: object + description: | + Valor líquido da movimentação posterior à dedução de impostos (IOF e IR) e taxa de saída. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + additionalProperties: false + MetaSingle: + type: object + description: Meta informação referente a API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + FundsMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + FundsLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + FundsBalancesBlockedAmount: + type: object + description: 'Valor líquido não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros);' + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + FundsBalancesFinancialTransactionTaxProvision: + type: object + description: Valor do imposto considerando a alíquota vigente na data de referência. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + example: '50.02' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + FundsBalancesGrossAmount: + type: object + description: 'Valor do investimento que se refere a quantidade da cota x valor da cota, atualizado na data de referência.' + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + FundsBalancesIncomeTaxProvision: + type: object + description: Valor do imposto considerando a alíquota vigente na data de referência. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + example: '50.02' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + FundsBalancesNetAmount: + type: object + description: 'Valor do investimento atualizado na data de referência, posterior a dedução de impostos (IOF e IR) e taxa de saída, caso a instituição considere este valor na composição do saldo líquido.' + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + FundsBalancesQuotaGrossPriceValue: + type: object + description: Valor bruto da cota atualizado na data de referência. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,8}$' + maxLength: 25 + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + EnumFundsTransactionsType: + type: string + description: | + Tipo de movimentação (Entrada ou Saída). + + ENTRADA: APLICACAO, TRANSFERENCIA_COTAS, OUTROS. + + SAIDA: RESGATE, COME_COTAS, TRANSFERENCIA_COTAS, AMORTIZACAO, OUTROS. + enum: + - ENTRADA + - SAIDA + example: ENTRADA + EnumFundsTransactionsTransactionType: + type: string + description: | + O campo deve classificar a transação de movimentação de investimento em um dos tipos descritos (amortização, transferência de cotas, aplicação, resgate ou come-cotas). + A opção OUTROS só deve ser utilizada para os casos em que de fato a transação compartilhada não possa ser classificada como um dos itens deste Enum, e nesse caso deve-se preencher informações adicionais. + enum: + - AMORTIZACAO + - TRANSFERENCIA_COTAS + - APLICACAO + - RESGATE + - COME_COTAS + - OUTROS + example: AMORTIZACAO + EnumFundsTransactionsCurrentType: + type: string + description: | + Tipo de movimentação (Entrada ou Saída). + + ENTRADA: APLICACAO, TRANSFERENCIA_COTAS, OUTROS. + + SAIDA: RESGATE, COME_COTAS, TRANSFERENCIA_COTAS, AMORTIZACAO, OUTROS. + enum: + - ENTRADA + - SAIDA + example: ENTRADA + EnumFundsTransactionsCurrentTransactionType: + type: string + description: | + O campo deve classificar a transação de movimentação de investimento em um dos tipos descritos (amortização, transferência de cotas, aplicação, resgate ou come-cotas). + A opção OUTROS só deve ser utilizada para os casos em que de fato a transação compartilhada não possa ser classificada como um dos itens deste Enum, e nesse caso deve-se preencher informações adicionais. + enum: + - AMORTIZACAO + - TRANSFERENCIA_COTAS + - APLICACAO + - RESGATE + - COME_COTAS + - OUTROS + example: AMORTIZACAO + ResponseErrorMetaSingle: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + $ref: '#/components/schemas/MetaOnlyRequestDateTime' + MetaOnlyRequestDateTime: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + ResponseErrorWithAbleAdditionalProperties: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + $ref: '#/components/schemas/MetaWithAbleAdditionalProperties' + MetaWithAbleAdditionalProperties: + type: object + description: Meta informações referente à API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + parameters: + InvestmentId: + name: investmentId + in: path + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + example: '92792126019929200000000000000000000000000' + Authorization: + name: Authorization + in: header + description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado + required: true + schema: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + xFapiAuthDate: + name: x-fapi-auth-date + in: header + description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a RFC7231. Exemplo: Sun, 10 Sep 2017 19:43:31 UTC.' + required: false + schema: + type: string + pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$' + minLength: 29 + maxLength: 29 + xFapiCustomerIpAddress: + name: x-fapi-customer-ip-address + in: header + description: O endereço IP do usuário se estiver atualmente logado com o receptor. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiInteractionId: + name: x-fapi-interaction-id + in: header + description: Um UUID RFC4122 usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela receptora (client) e o seu valor deve ser "espelhado" pela transmissora (server) no cabeçalho de resposta. + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + xCustomerUserAgent: + name: x-customer-user-agent + in: header + description: Indica o user-agent que o usuário utiliza. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + page: + name: page + in: query + description: Número da página que está sendo requisitada (o valor da primeira página é 1). + schema: + type: integer + default: 1 + minimum: 1 + maximum: 2147483647 + format: int32 + pageSize: + name: page-size + in: query + description: Quantidade total de registros por páginas. A transmissora deve considerar entrada como 25, caso seja informado algum valor menor pela receptora. Enquanto houver mais que 25 registros a enviar, a transmissora deve considerar o mínimo por página como 25. Somente a última página retornada (ou primeira, no caso de página única) pode conter menos de 25 registros. Mais informações, acesse Especificações de APIs > Padrões > Paginação. + schema: + type: integer + default: 25 + minimum: 25 + format: int32 + maximum: 1000 + pagination-key: + name: pagination-key + in: query + description: 'Identificador de rechamada, utilizado para evitar a contagem de chamadas ao endpoint durante a paginação.' + schema: + type: string + maxLength: 2048 + pattern: '[\w\W\s]*' + fromTransactionDate: + name: fromTransactionDate + description: | + Data inicial de filtragem. + + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + toTransactionDate: + name: toTransactionDate + description: | + Data final de filtragem. + + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + fromTransactionDateCurrent: + name: fromTransactionDate + description: | + Data inicial de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + toTransactionDateCurrent: + name: toTransactionDate + description: | + Data final de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + securitySchemes: + OAuth2AuthorizationCode: + type: oauth2 + description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados. + flows: + authorizationCode: + authorizationUrl: 'https://authserver.example/authorization' + tokenUrl: 'https://authserver.example/token' + scopes: + funds: Escopo necessário para acesso à API funds. O controle dos endpoints específicos é feito via permissions. + responses: + OkResponseFundsProductList: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseFundsProductList' + OkResponseFundsProductIdentification: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseFundsProductIdentification' + ResponseFundsBalances: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseFundsBalances' + OKResponseFundsTransactions: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseFundsTransactions' + OKResponseFundsTransactionsCurrent: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseFundsTransactionsCurrent' + BadRequest: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Forbidden: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + GatewayTimeout: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + InternalServerError: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Locked: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + MethodNotAllowed: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + NotAcceptable: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + NotFound: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TooManyRequests: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Unauthorized: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + UnprocessableEntity: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Default: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + SiteIsOverloaded: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + BadRequestWithAdditionalProperties: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + ForbiddenWithAdditionalProperties: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + GatewayTimeoutWithAdditionalProperties: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + InternalServerErrorWithAdditionalProperties: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + LockedWithAdditionalProperties: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + MethodNotAllowedWithAdditionalProperties: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + NotAcceptableWithAdditionalProperties: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + NotFoundWithAdditionalProperties: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + TooManyRequestsWithAdditionalProperties: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + UnauthorizedWithAdditionalProperties: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + UnprocessableEntityWithAdditionalProperties: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + DefaultWithAdditionalProperties: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + SiteIsOverloadedWithAdditionalProperties: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' diff --git a/swagger-apis/funds/1.0.0-rc3.0.yml b/swagger-apis/funds/1.0.0-rc3.0.yml new file mode 100644 index 000000000..091b836b4 --- /dev/null +++ b/swagger-apis/funds/1.0.0-rc3.0.yml @@ -0,0 +1,1625 @@ +openapi: 3.0.0 +info: + title: API Funds - Open Finance Brasil + description: | + API de informações de operações de Fundos de Investimento Open Finance Brasil – Fase 4. + API que retorna informações de operações de investimento do tipo Fundos de Investimento mantidas nas instituições transmissoras por seus clientes, incluindo dados como informações do produto, quantidade, saldos em posição do cliente e movimentações financeiras. + Não possui segregação entre pessoa natural e pessoa jurídica. Requer consentimento do cliente para todos os endpoints. + Devem ser considerados como escopo de exposição todos os fundos de investimento classificados como: Renda Fixa, Ações, Multimercado e Cambial. + Para identificação do produto e posição do cliente, a exposição será de forma consolidada por Fundo de Investimento. + Para movimentações, a exposição se dará pela Ordem do Cliente, por exemplo, uma Ordem de Resgate é compartilhada como uma única movimentação, mesmo que esteja associada a diferentes Certificados (Cautelas). + + As instituições podem apresentar cenários distintos no que diz respeito ao sincronismo entre posição `/balances` e movimentação `/transactions` e `/transactions-current` da API: + + - Algumas instituições refletem movimentações ainda não convertidas na posição do cliente em seus canais eletrônicos. Isso implica que pode ocorrer compartilhamento de posição atualizada, cujas movimentações relacionadas serão expostas no ecossistema apenas após a conversão das mesmas; + + - Outras instituições refletem na posição apenas movimentações convertidas nos seus canais eletrônicos. Isso implica que o compartilhamento da posição em relação às movimentações é feito de forma sincronizada no ecossistema. + version: 1.0.0-rc3.0 + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' + contact: + name: Governança do Open Finance Brasil – Especificações + email: gt-interfaces@openbankingbr.org + url: 'https://openbanking-brasil.github.io/areadesenvolvedor/' +servers: + - url: 'https://api.banco.com.br/open-banking/funds/v1' + description: Servidor de Produção + - url: 'https://apih.banco.com.br/open-banking/funds/v1' + description: Servidor de Homologação +tags: + - name: Product List + description: Obtém a lista de operações de Fundos de Investimento mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + - name: Product Identification + description: Obtém os dados da operação de Fundos de Investimento identificada por investmentId. + - name: Balances + description: Obtém a posição da operação de Fundos de Investimento identificada por investmentId. + - name: Transactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Fundos de Investimento identificada por investmentId. + - name: Transactions Current + description: 'Obtém as movimentações recentes da operação de Fundos de Investimento identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' +paths: + /investments: + get: + tags: + - Product List + summary: Obtém a lista de operações de Fundos de Investimento mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + operationId: fundsGetInvestments + description: Obtém a lista de operações de Fundos de Investimento mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + parameters: + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + responses: + '200': + $ref: '#/components/responses/OkResponseFundsProductList' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - funds + '/investments/{investmentId}': + get: + tags: + - Product Identification + summary: Obtém os dados da operação de Fundos de Investimento identificada por investmentId. + operationId: fundsGetInvestmentsInvestmentId + description: Obtém os dados da operação de Fundos de Investimento identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/OkResponseFundsProductIdentification' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - funds + '/investments/{investmentId}/balances': + get: + tags: + - Balances + summary: Obtém a posição da operação de Fundos de Investimento identificada por investmentId. + operationId: fundsGetInvestmentsInvestmentIdBalances + description: | + Obtém a posição da operação de Fundos de Investimento identificada por investmentId. + + Nos casos em que não houver posição para o investimento, ou seja, quantidade de ativos e valores monetários zerados, mas o mesmo ainda estiver no prazo de exposição (até 12 meses após a última movimentação), deve se retornar status code 200 e para o payload de retorno considerar os valores abaixo. Campos não obrigatórios não devem ser retornados: + + - Valores monetários: 0.00 + - Quantidade de ativos: 0.00 + - Data e hora da última posição: mesmo conteúdo do campo requestDateTime + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseFundsBalances' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - funds + '/investments/{investmentId}/transactions': + get: + tags: + - Transactions + summary: Obtém as movimentações históricas (últimos 12 meses) da operação de Fundos de Investimento identificada por investmentId. + operationId: fundsGetInvestmentsInvestmentIdTransactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Fundos de Investimento identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDate' + - $ref: '#/components/parameters/toTransactionDate' + responses: + '200': + $ref: '#/components/responses/OKResponseFundsTransactions' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - funds + '/investments/{investmentId}/transactions-current': + get: + tags: + - Transactions Current + summary: 'Obtém as movimentações recentes da operação de Fundos de Investimento identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + operationId: fundsGetInvestmentsInvestmentIdTransactionsCurrent + description: 'Obtém as movimentações recentes da operação de Fundos de Investimento identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDateCurrent' + - $ref: '#/components/parameters/toTransactionDateCurrent' + responses: + '200': + $ref: '#/components/responses/OKResponseFundsTransactionsCurrent' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - funds +components: + schemas: + ResponseFundsProductList: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseFundsProductListData' + links: + $ref: '#/components/schemas/FundsLinks' + meta: + $ref: '#/components/schemas/FundsMeta' + additionalProperties: false + ResponseFundsProductIdentification: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/ResponseFundsProductIdentificationData' + links: + $ref: '#/components/schemas/FundsLinks' + meta: + $ref: '#/components/schemas/FundsMeta' + additionalProperties: false + ResponseFundsBalances: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/ResponseFundsBalanceData' + links: + $ref: '#/components/schemas/FundsLinks' + meta: + $ref: '#/components/schemas/FundsMeta' + additionalProperties: false + ResponseFundsTransactions: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseFundsTransactionsData' + links: + $ref: '#/components/schemas/FundsLinks' + meta: + $ref: '#/components/schemas/MetaSingle' + additionalProperties: false + ResponseFundsTransactionsCurrent: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseFundsTransactionsCurrentData' + links: + $ref: '#/components/schemas/FundsLinks' + meta: + $ref: '#/components/schemas/MetaSingle' + additionalProperties: false + ResponseFundsProductListData: + type: object + description: Lista de fundos de investimento mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + required: + - brandName + - companyCnpj + - investmentId + properties: + brandName: + type: string + description: 'Nome da Marca reportada pelo participante no Open Finance. Recomenda-se utilizar, sempre que possível, o mesmo nome de marca atribuído no campo do diretório Customer Friendly Server Name (Authorisation Server).' + pattern: '[\w\W\s]*' + example: Organização A + maxLength: 80 + companyCnpj: + type: string + description: 'Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. Deve-se ter apenas os números do CNPJ, sem máscara.' + maxLength: 14 + pattern: '^\d{14}$' + example: '21128159000166' + anbimaCategory: + type: string + description: | + Conforme classificação ANBIMA, que segue a deliberação 77 da ANBIMA. + + – Renda Fixa + + – Ações + + – Multimercado + + – Cambial + + https://www.anbima.com.br/data/files/5A/44/2C/B7/8411B510CD3B4DA568A80AC2/DeliberacaoN77-Diretriz-de-Classificacao-de-Fundos.pdf + enum: + - RENDA_FIXA + - ACOES + - MULTIMERCADO + - CAMBIAL + example: RENDA_FIXA + anbimaClass: + type: string + description: Campo necessário para aderência a Resolução CVM175. Aguardando definições de mercado. Deve se tratar de campo do tipo enum. + maxLength: 70 + pattern: '[\w\W\s]*' + anbimaSubclass: + type: string + description: Campo necessário para aderência a Resolução CVM175. Aguardando definições de mercado. Deve se tratar de campo do tipo enum. + maxLength: 70 + pattern: '[\w\W\s]*' + investmentId: + type: string + description: Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora. Nos casos em que o cliente, após completar 12 meses da última movimentação e com quantidade de ativos zerada (cliente não tem mais posse do produto sob custódia da transmissora), compre novamente o ativo que já investiu em períodos passados, manter o mesmo investmentId anteriormente utilizado. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + additionalProperties: false + ResponseFundsProductIdentificationData: + type: object + description: Informações do produto de fundo de investimento a que se refere investmentId. + required: + - name + - cnpjNumber + properties: + name: + type: string + description: Nome oficial do fundo de investimento conforme exibido para os clientes nos canais eletrônicos. + maxLength: 250 + example: CONSTELLATION MASTER FIA + cnpjNumber: + type: string + description: CNPJ do fundo de investimento. + maxLength: 14 + pattern: '^\d{14}$' + example: '11225860000140' + isinCode: + type: string + description: | + Código universal que identifica cada valor mobiliário ou instrumento financeiro, conforme Norma ISO 6166. + + DEFINIÇÃO: O ISIN (International Securities Identification Number) é um código que identifica um valor mobiliário, conforme a norma ISO 6166. + + ESTRUTURA: O ISIN é um código alfanumérico que possui 12 caracteres com a seguinte estrutura: + - Um prefixo, composto de 2 caracteres alfa, que identifica o código do país (Norma ISO 3166); + - O número básico, composto de 9 caracteres alfabéticos ou numéricos em sua extensão; + - Um dígito numérico de controle. + maxLength: 12 + minLength: 12 + pattern: '^[A-Z]{2}([A-Z0-9]){9}\d{1}$' + example: BRCST4CTF001 + anbimaCategory: + type: string + description: | + Conforme classificação ANBIMA, que segue a deliberação 77 da ANBIMA. + + – Renda Fixa + + – Ações + + – Multimercado + + – Cambial + + https://www.anbima.com.br/data/files/5A/44/2C/B7/8411B510CD3B4DA568A80AC2/DeliberacaoN77-Diretriz-de-Classificacao-de-Fundos.pdf + enum: + - RENDA_FIXA + - ACOES + - MULTIMERCADO + - CAMBIAL + example: RENDA_FIXA + anbimaClass: + type: string + description: Campo necessário para aderência a Resolução CVM175. Aguardando definições de mercado. Deve se tratar de campo do tipo enum. + maxLength: 70 + pattern: '[\w\W\s]*' + anbimaSubclass: + type: string + description: Campo necessário para aderência a Resolução CVM175. Aguardando definições de mercado. Deve se tratar de campo do tipo enum. + maxLength: 70 + pattern: '[\w\W\s]*' + additionalProperties: false + ResponseFundsBalanceData: + type: object + description: Informações da posição do fundo de investimento a que se refere investmentId. + required: + - referenceDate + - grossAmount + - netAmount + - incomeTaxProvision + - financialTransactionTaxProvision + - blockedAmount + - quotaQuantity + - quotaGrossPriceValue + properties: + referenceDate: + type: string + format: date + description: Data da última posição consolidada disponível a que se referem os dados transacionais do cliente disponíveis nos canais eletrônicos. + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2023-01-07' + grossAmount: + $ref: '#/components/schemas/FundsBalancesGrossAmount' + netAmount: + $ref: '#/components/schemas/FundsBalancesNetAmount' + incomeTaxProvision: + $ref: '#/components/schemas/FundsBalancesIncomeTaxProvision' + financialTransactionTaxProvision: + $ref: '#/components/schemas/FundsBalancesFinancialTransactionTaxProvision' + blockedAmount: + $ref: '#/components/schemas/FundsBalancesBlockedAmount' + quotaQuantity: + type: string + format: double + description: Quantidade de cotas detidas em posição do cliente . + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + example: '42.25' + quotaGrossPriceValue: + $ref: '#/components/schemas/FundsBalancesQuotaGrossPriceValue' + ResponseFundsTransactionsData: + type: object + description: Informações da posição do fundo de investimento a que se refere investmentId. + required: + - transactionId + - type + - transactionType + - transactionConversionDate + - transactionQuotaPrice + - transactionQuotaQuantity + - transactionValue + - transactionGrossValue + properties: + transactionId: + type: string + description: Código ou identificador único prestado pela instituição que mantém a representação individual do movimento na posição do fundo. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + type: + $ref: '#/components/schemas/EnumFundsTransactionsType' + transactionType: + $ref: '#/components/schemas/EnumFundsTransactionsTransactionType' + transactionTypeAdditionalInfo: + type: string + description: | + Informação adicional do tipo do motivo, para preenchimento no caso de movimentações não delimitadas no domínio. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com o valor 'OUTROS'. + maxLength: 100 + pattern: '[\w\W\s]*' + transactionConversionDate: + type: string + format: date + description: Data da conversão da transação de movimentação do fundo de investimento. + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2023-01-07' + transactionQuotaPrice: + type: object + description: | + É o valor da cota utilizada na conversão para a realização da movimentação do cliente no fundo, conforme a regra prevista em regulamento - valor pode ser negativo. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 25 + pattern: '^-?\d{1,15}\.\d{2,8}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionQuotaQuantity: + type: string + format: double + description: | + Número de cotas convertidas na data da movimentação. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.25' + transactionValue: + type: object + description: Valor solicitado pelo cliente. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionGrossValue: + type: object + description: | + Valor da movimentação que se refere a quantidade da cota x valor da cota da movimentação. + Nos casos em que não houver movimentação de cotas, por exemplo: amortização, não considerar a regra descrita. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + incomeTax: + type: object + description: | + Valor do Imposto de Renda (IR) retido na fonte considerando a alíquota vigente na data da movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + financialTransactionTax: + type: object + description: | + Valor do Imposto sobre Operações Financeiras (IOF) retido na fonte considerando a alíquota vigente na data da movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionExitFee: + type: object + description: | + Valor da taxa de saída considerado na movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionNetValue: + type: object + description: | + Valor líquido da movimentação posterior à dedução de impostos (IOF e IR) e taxa de saída. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + additionalProperties: false + ResponseFundsTransactionsCurrentData: + type: object + description: Informações da posição do fundo de investimento a que se refere investmentId. + required: + - transactionId + - type + - transactionType + - transactionConversionDate + - transactionQuotaPrice + - transactionQuotaQuantity + - transactionValue + - transactionGrossValue + properties: + transactionId: + type: string + description: Código ou identificador único prestado pela instituição que mantém a representação individual do movimento na posição do fundo. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + type: + $ref: '#/components/schemas/EnumFundsTransactionsCurrentType' + transactionType: + $ref: '#/components/schemas/EnumFundsTransactionsCurrentTransactionType' + transactionTypeAdditionalInfo: + type: string + description: | + Informação adicional do tipo do motivo, para preenchimento no caso de movimentações não delimitadas no domínio. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com o valor 'OUTROS'. + maxLength: 100 + pattern: '[\w\W\s]*' + transactionConversionDate: + type: string + format: date + description: Data da conversão da transação de movimentação do fundo de investimento. + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2023-01-07' + transactionQuotaPrice: + type: object + description: | + É o valor da cota utilizada na conversão para a realização da movimentação do cliente no fundo, conforme a regra prevista em regulamento - valor pode ser negativo. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 25 + pattern: '^-?\d{1,15}\.\d{2,8}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionQuotaQuantity: + type: string + format: double + description: | + Número de cotas convertidas na data da movimentação. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.25' + transactionValue: + type: object + description: Valor solicitado pelo cliente. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionGrossValue: + type: object + description: | + Valor da movimentação que se refere a quantidade da cota x valor da cota da movimentação. + Nos casos em que não houver movimentação de cotas, por exemplo: amortização, não considerar a regra descrita. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + incomeTax: + type: object + description: | + Valor do Imposto de Renda (IR) retido na fonte considerando a alíquota vigente na data da movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + financialTransactionTax: + type: object + description: | + Valor do Imposto sobre Operações Financeiras (IOF) retido na fonte considerando a alíquota vigente na data da movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionExitFee: + type: object + description: | + Valor da taxa de saída considerado na movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionNetValue: + type: object + description: | + Valor líquido da movimentação posterior à dedução de impostos (IOF e IR) e taxa de saída. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + additionalProperties: false + MetaSingle: + type: object + description: Meta informação referente a API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + FundsMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + FundsLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + FundsBalancesBlockedAmount: + type: object + description: Valor não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros). + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + FundsBalancesFinancialTransactionTaxProvision: + type: object + description: Valor do imposto considerando a alíquota vigente na data de referência. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + example: '50.02' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + FundsBalancesGrossAmount: + type: object + description: 'Valor do investimento que se refere a quantidade da cota x valor da cota, atualizado na data de referência.' + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + FundsBalancesIncomeTaxProvision: + type: object + description: Valor do imposto de renda provisionado considerando a alíquota vigente na data de referência. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + example: '50.02' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + FundsBalancesNetAmount: + type: object + description: 'Valor do investimento atualizado na data de referência, posterior a dedução de impostos (IOF e IR) e taxa de saída, caso a instituição considere este valor na composição do saldo líquido.' + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + FundsBalancesQuotaGrossPriceValue: + type: object + description: Valor bruto da cota atualizado na data de referência. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,8}$' + maxLength: 25 + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + EnumFundsTransactionsType: + type: string + description: | + Tipo de movimentação (Entrada ou Saída). + + ENTRADA: APLICACAO, TRANSFERENCIA_COTAS, OUTROS. + + SAIDA: RESGATE, COME_COTAS, TRANSFERENCIA_COTAS, AMORTIZACAO, OUTROS. + enum: + - ENTRADA + - SAIDA + example: ENTRADA + EnumFundsTransactionsTransactionType: + type: string + description: | + O campo deve classificar a transação de movimentação de investimento em um dos tipos descritos (amortização, transferência de cotas, aplicação, resgate ou come-cotas). + A opção OUTROS só deve ser utilizada para os casos em que de fato a transação compartilhada não possa ser classificada como um dos itens deste Enum, e nesse caso deve-se preencher informações adicionais. + enum: + - AMORTIZACAO + - TRANSFERENCIA_COTAS + - APLICACAO + - RESGATE + - COME_COTAS + - OUTROS + example: AMORTIZACAO + EnumFundsTransactionsCurrentType: + type: string + description: | + Tipo de movimentação (Entrada ou Saída). + + ENTRADA: APLICACAO, TRANSFERENCIA_COTAS, OUTROS. + + SAIDA: RESGATE, COME_COTAS, TRANSFERENCIA_COTAS, AMORTIZACAO, OUTROS. + enum: + - ENTRADA + - SAIDA + example: ENTRADA + EnumFundsTransactionsCurrentTransactionType: + type: string + description: | + O campo deve classificar a transação de movimentação de investimento em um dos tipos descritos (amortização, transferência de cotas, aplicação, resgate ou come-cotas). + A opção OUTROS só deve ser utilizada para os casos em que de fato a transação compartilhada não possa ser classificada como um dos itens deste Enum, e nesse caso deve-se preencher informações adicionais. + enum: + - AMORTIZACAO + - TRANSFERENCIA_COTAS + - APLICACAO + - RESGATE + - COME_COTAS + - OUTROS + example: AMORTIZACAO + ResponseErrorMetaSingle: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + $ref: '#/components/schemas/MetaOnlyRequestDateTime' + MetaOnlyRequestDateTime: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + ResponseErrorWithAbleAdditionalProperties: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + $ref: '#/components/schemas/MetaWithAbleAdditionalProperties' + MetaWithAbleAdditionalProperties: + type: object + description: Meta informações referente à API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + parameters: + InvestmentId: + name: investmentId + in: path + description: Identifica de forma única o relacionamento do cliente com o fundo, mantendo as regras de imutabilidade dentro da instituição transmissora. + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + example: '92792126019929200000000000000000000000000' + Authorization: + name: Authorization + in: header + description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado + required: true + schema: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + xFapiAuthDate: + name: x-fapi-auth-date + in: header + description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a RFC7231. Exemplo: Sun, 10 Sep 2017 19:43:31 UTC.' + required: false + schema: + type: string + pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$' + minLength: 29 + maxLength: 29 + xFapiCustomerIpAddress: + name: x-fapi-customer-ip-address + in: header + description: O endereço IP do usuário se estiver atualmente logado com o receptor. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiInteractionId: + name: x-fapi-interaction-id + in: header + description: Um UUID RFC4122 usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela receptora (client) e o seu valor deve ser "espelhado" pela transmissora (server) no cabeçalho de resposta. + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + xCustomerUserAgent: + name: x-customer-user-agent + in: header + description: Indica o user-agent que o usuário utiliza. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + page: + name: page + in: query + description: Número da página que está sendo requisitada (o valor da primeira página é 1). + schema: + type: integer + default: 1 + minimum: 1 + maximum: 2147483647 + format: int32 + pageSize: + name: page-size + in: query + description: Quantidade total de registros por páginas. A transmissora deve considerar entrada como 25, caso seja informado algum valor menor pela receptora. Enquanto houver mais que 25 registros a enviar, a transmissora deve considerar o mínimo por página como 25. Somente a última página retornada (ou primeira, no caso de página única) pode conter menos de 25 registros. Mais informações, acesse Especificações de APIs > Padrões > Paginação. + schema: + type: integer + default: 25 + minimum: 25 + format: int32 + maximum: 1000 + pagination-key: + name: pagination-key + in: query + description: 'Identificador de rechamada, utilizado para evitar a contagem de chamadas ao endpoint durante a paginação.' + schema: + type: string + maxLength: 2048 + pattern: '[\w\W\s]*' + fromTransactionDate: + name: fromTransactionDate + description: | + Data inicial de filtragem. + + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + toTransactionDate: + name: toTransactionDate + description: | + Data final de filtragem. + + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + fromTransactionDateCurrent: + name: fromTransactionDate + description: | + Data inicial de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + toTransactionDateCurrent: + name: toTransactionDate + description: | + Data final de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + securitySchemes: + OAuth2AuthorizationCode: + type: oauth2 + description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados. + flows: + authorizationCode: + authorizationUrl: 'https://authserver.example/authorization' + tokenUrl: 'https://authserver.example/token' + scopes: + funds: Escopo necessário para acesso à API funds. O controle dos endpoints específicos é feito via permissions. + responses: + OkResponseFundsProductList: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseFundsProductList' + OkResponseFundsProductIdentification: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseFundsProductIdentification' + ResponseFundsBalances: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseFundsBalances' + OKResponseFundsTransactions: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseFundsTransactions' + OKResponseFundsTransactionsCurrent: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseFundsTransactionsCurrent' + BadRequest: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Forbidden: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + GatewayTimeout: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + InternalServerError: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Locked: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + MethodNotAllowed: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + NotAcceptable: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + NotFound: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TooManyRequests: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Unauthorized: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + UnprocessableEntity: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Default: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + SiteIsOverloaded: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + BadRequestWithAdditionalProperties: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + ForbiddenWithAdditionalProperties: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + GatewayTimeoutWithAdditionalProperties: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + InternalServerErrorWithAdditionalProperties: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + LockedWithAdditionalProperties: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + MethodNotAllowedWithAdditionalProperties: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + NotAcceptableWithAdditionalProperties: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + NotFoundWithAdditionalProperties: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + TooManyRequestsWithAdditionalProperties: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + UnauthorizedWithAdditionalProperties: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + UnprocessableEntityWithAdditionalProperties: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + DefaultWithAdditionalProperties: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + SiteIsOverloadedWithAdditionalProperties: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' diff --git a/swagger-apis/funds/1.0.0.yml b/swagger-apis/funds/1.0.0.yml new file mode 100644 index 000000000..4385f96e1 --- /dev/null +++ b/swagger-apis/funds/1.0.0.yml @@ -0,0 +1,1672 @@ +openapi: 3.0.0 +info: + title: API Funds - Open Finance Brasil + description: | + API de informações de operações de Fundos de Investimento Open Finance Brasil – Fase 4. + API que retorna informações de operações de investimento do tipo Fundos de Investimento mantidas nas instituições transmissoras por seus clientes, incluindo dados como informações do produto, quantidade, saldos em posição do cliente e movimentações financeiras. + Não possui segregação entre pessoa natural e pessoa jurídica. Requer consentimento do cliente para todos os endpoints. + Devem ser considerados como escopo de exposição todos os fundos de investimento classificados como: Renda Fixa, Ações, Multimercado e Cambial. + Para identificação do produto e posição do cliente, a exposição será de forma consolidada por Fundo de Investimento. + Para movimentações, a exposição se dará pela Ordem do Cliente, por exemplo, uma Ordem de Resgate é compartilhada como uma única movimentação, mesmo que esteja associada a diferentes Certificados (Cautelas). + + As instituições podem apresentar cenários distintos no que diz respeito ao sincronismo entre posição `/balances` e movimentação `/transactions` e `/transactions-current` da API: + + - Algumas instituições refletem movimentações ainda não convertidas na posição do cliente em seus canais eletrônicos. Isso implica que pode ocorrer compartilhamento de posição atualizada, cujas movimentações relacionadas serão expostas no ecossistema apenas após a conversão das mesmas; + + - Outras instituições refletem na posição apenas movimentações convertidas nos seus canais eletrônicos. Isso implica que o compartilhamento da posição em relação às movimentações é feito de forma sincronizada no ecossistema. + + Para o identificador do investimento (investmentId) deve ser adotado o seguinte comportamento: + + - Após 12 meses sem movimentações e com quantidade de ativos zerada, o resourceId correspondente ao investmentId em questão deve passar ao status UNAVAILABLE (considerando consentimento válido); + + - Nas situações em que o cliente compre novamente o ativo após um período de 12 meses sem movimentação e com quantidade de ativos zerada, o mesmo identificador (investmentId) deve ser utilizado. Especificamente para tais produtos, o status do recurso na resources deve passar de UNAVAILABLE para AVAILABLE. + version: 1.0.0 + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' + contact: + name: Governança do Open Finance Brasil – Especificações + email: gt-interfaces@openbankingbr.org + url: 'https://openbanking-brasil.github.io/areadesenvolvedor/' +servers: + - url: 'https://api.banco.com.br/open-banking/funds/v1' + description: Servidor de Produção + - url: 'https://apih.banco.com.br/open-banking/funds/v1' + description: Servidor de Homologação +tags: + - name: Product List + description: Obtém a lista de operações de Fundos de Investimento mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + - name: Product Identification + description: Obtém os dados da operação de Fundos de Investimento identificada por investmentId. + - name: Balances + description: Obtém a posição da operação de Fundos de Investimento identificada por investmentId. + - name: Transactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Fundos de Investimento identificada por investmentId. + - name: Transactions Current + description: 'Obtém as movimentações recentes da operação de Fundos de Investimento identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' +paths: + /investments: + get: + tags: + - Product List + summary: Obtém a lista de operações de Fundos de Investimento mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + operationId: fundsGetInvestments + description: Obtém a lista de operações de Fundos de Investimento mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + parameters: + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + responses: + '200': + $ref: '#/components/responses/OkResponseFundsProductList' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - funds + '/investments/{investmentId}': + get: + tags: + - Product Identification + summary: Obtém os dados da operação de Fundos de Investimento identificada por investmentId. + operationId: fundsGetInvestmentsInvestmentId + description: Obtém os dados da operação de Fundos de Investimento identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/OkResponseFundsProductIdentification' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - funds + '/investments/{investmentId}/balances': + get: + tags: + - Balances + summary: Obtém a posição da operação de Fundos de Investimento identificada por investmentId. + operationId: fundsGetInvestmentsInvestmentIdBalances + description: | + Obtém a posição da operação de Fundos de Investimento identificada por investmentId. + + Nos casos em que não houver posição para o investimento, ou seja, quantidade de ativos e valores monetários zerados, mas o mesmo ainda estiver no prazo de exposição (até 12 meses após a última movimentação), deve se retornar status code 200 e para o payload de retorno considerar os valores abaixo. Campos não obrigatórios não devem ser retornados: + + - Valores monetários: 0.00 + - Quantidade de ativos: 0.00 + - Data e hora da última posição: mesmo conteúdo do campo requestDateTime + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseFundsBalances' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - funds + '/investments/{investmentId}/transactions': + get: + tags: + - Transactions + summary: Obtém as movimentações históricas (últimos 12 meses) da operação de Fundos de Investimento identificada por investmentId. + operationId: fundsGetInvestmentsInvestmentIdTransactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Fundos de Investimento identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionConversionDate' + - $ref: '#/components/parameters/toTransactionConversionDate' + responses: + '200': + $ref: '#/components/responses/OKResponseFundsTransactions' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - funds + '/investments/{investmentId}/transactions-current': + get: + tags: + - Transactions Current + summary: 'Obtém as movimentações recentes da operação de Fundos de Investimento identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + operationId: fundsGetInvestmentsInvestmentIdTransactionsCurrent + description: 'Obtém as movimentações recentes da operação de Fundos de Investimento identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionConversionDateCurrent' + - $ref: '#/components/parameters/toTransactionConversionDateCurrent' + responses: + '200': + $ref: '#/components/responses/OKResponseFundsTransactionsCurrent' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - funds +components: + schemas: + ResponseFundsProductList: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseFundsProductListData' + links: + $ref: '#/components/schemas/FundsProductListLinks' + meta: + $ref: '#/components/schemas/FundsMeta' + additionalProperties: false + ResponseFundsProductIdentification: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/ResponseFundsProductIdentificationData' + links: + $ref: '#/components/schemas/FundsLinks' + meta: + $ref: '#/components/schemas/FundsMeta' + additionalProperties: false + ResponseFundsBalances: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/ResponseFundsBalanceData' + links: + $ref: '#/components/schemas/FundsLinks' + meta: + $ref: '#/components/schemas/FundsMeta' + additionalProperties: false + ResponseFundsTransactions: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseFundsTransactionsData' + links: + $ref: '#/components/schemas/FundsLinks' + meta: + $ref: '#/components/schemas/MetaSingle' + additionalProperties: false + ResponseFundsTransactionsCurrent: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseFundsTransactionsCurrentData' + links: + $ref: '#/components/schemas/FundsLinks' + meta: + $ref: '#/components/schemas/MetaSingle' + additionalProperties: false + ResponseFundsProductListData: + type: object + description: Lista de fundos de investimento mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + required: + - brandName + - companyCnpj + - investmentId + properties: + brandName: + type: string + description: 'Nome da Marca reportada pelo participante no Open Finance. Recomenda-se utilizar, sempre que possível, o mesmo nome de marca atribuído no campo do diretório Customer Friendly Server Name (Authorisation Server).' + pattern: '[\w\W\s]*' + example: Organização A + maxLength: 80 + companyCnpj: + type: string + description: 'Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. Deve-se ter apenas os números do CNPJ, sem máscara.' + maxLength: 14 + pattern: '^\d{14}$' + example: '21128159000166' + anbimaCategory: + type: string + description: | + Conforme classificação ANBIMA, que segue a deliberação 77 da ANBIMA. + + – Renda Fixa + + – Ações + + – Multimercado + + – Cambial + + https://www.anbima.com.br/data/files/5A/44/2C/B7/8411B510CD3B4DA568A80AC2/DeliberacaoN77-Diretriz-de-Classificacao-de-Fundos.pdf + enum: + - RENDA_FIXA + - ACOES + - MULTIMERCADO + - CAMBIAL + example: RENDA_FIXA + anbimaClass: + type: string + description: Campo necessário para aderência a Resolução CVM175. Aguardando definições de mercado. Deve se tratar de campo do tipo enum. + maxLength: 70 + pattern: '[\w\W\s]*' + anbimaSubclass: + type: string + description: Campo necessário para aderência a Resolução CVM175. Aguardando definições de mercado. Deve se tratar de campo do tipo enum. + maxLength: 70 + pattern: '[\w\W\s]*' + investmentId: + type: string + description: Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora. Nos casos em que o cliente, após completar 12 meses da última movimentação e com quantidade de ativos zerada (cliente não tem mais posse do produto sob custódia da transmissora), compre novamente o ativo que já investiu em períodos passados, manter o mesmo investmentId anteriormente utilizado. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + additionalProperties: false + ResponseFundsProductIdentificationData: + type: object + description: Informações do produto de fundo de investimento a que se refere investmentId. + required: + - name + - cnpjNumber + properties: + name: + type: string + description: Nome oficial do fundo de investimento conforme exibido para os clientes nos canais eletrônicos. + maxLength: 250 + example: CONSTELLATION MASTER FIA + cnpjNumber: + type: string + description: CNPJ do fundo de investimento. + maxLength: 14 + pattern: '^\d{14}$' + example: '11225860000140' + isinCode: + type: string + description: | + Código universal que identifica cada valor mobiliário ou instrumento financeiro, conforme Norma ISO 6166. + + DEFINIÇÃO: O ISIN (International Securities Identification Number) é um código que identifica um valor mobiliário, conforme a norma ISO 6166. + + ESTRUTURA: O ISIN é um código alfanumérico que possui 12 caracteres com a seguinte estrutura: + - Um prefixo, composto de 2 caracteres alfa, que identifica o código do país (Norma ISO 3166); + - O número básico, composto de 9 caracteres alfabéticos ou numéricos em sua extensão; + - Um dígito numérico de controle. + maxLength: 12 + minLength: 12 + pattern: '^[A-Z]{2}([A-Z0-9]){9}\d{1}$' + example: BRCST4CTF001 + anbimaCategory: + type: string + description: | + Conforme classificação ANBIMA, que segue a deliberação 77 da ANBIMA. + + – Renda Fixa + + – Ações + + – Multimercado + + – Cambial + + https://www.anbima.com.br/data/files/5A/44/2C/B7/8411B510CD3B4DA568A80AC2/DeliberacaoN77-Diretriz-de-Classificacao-de-Fundos.pdf + enum: + - RENDA_FIXA + - ACOES + - MULTIMERCADO + - CAMBIAL + example: RENDA_FIXA + anbimaClass: + type: string + description: Campo necessário para aderência a Resolução CVM175. Aguardando definições de mercado. Deve se tratar de campo do tipo enum. + maxLength: 70 + pattern: '[\w\W\s]*' + anbimaSubclass: + type: string + description: Campo necessário para aderência a Resolução CVM175. Aguardando definições de mercado. Deve se tratar de campo do tipo enum. + maxLength: 70 + pattern: '[\w\W\s]*' + additionalProperties: false + ResponseFundsBalanceData: + type: object + description: Informações da posição do fundo de investimento a que se refere investmentId. + required: + - referenceDate + - grossAmount + - netAmount + - incomeTaxProvision + - financialTransactionTaxProvision + - blockedAmount + - quotaQuantity + - quotaGrossPriceValue + properties: + referenceDate: + type: string + format: date + description: Data da última posição consolidada disponível a que se referem os dados transacionais do cliente disponíveis nos canais eletrônicos. + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2023-01-07' + grossAmount: + $ref: '#/components/schemas/FundsBalancesGrossAmount' + netAmount: + $ref: '#/components/schemas/FundsBalancesNetAmount' + incomeTaxProvision: + $ref: '#/components/schemas/FundsBalancesIncomeTaxProvision' + financialTransactionTaxProvision: + $ref: '#/components/schemas/FundsBalancesFinancialTransactionTaxProvision' + blockedAmount: + $ref: '#/components/schemas/FundsBalancesBlockedAmount' + quotaQuantity: + type: string + format: double + description: Quantidade de cotas detidas em posição do cliente . + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + example: '42.25' + quotaGrossPriceValue: + $ref: '#/components/schemas/FundsBalancesQuotaGrossPriceValue' + ResponseFundsTransactionsData: + type: object + description: Informações da posição do fundo de investimento a que se refere investmentId. + required: + - transactionId + - type + - transactionType + - transactionConversionDate + - transactionQuotaPrice + - transactionQuotaQuantity + - transactionValue + - transactionGrossValue + properties: + transactionId: + type: string + description: Código ou identificador único prestado pela instituição que mantém a representação individual do movimento na posição do fundo. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + type: + $ref: '#/components/schemas/EnumFundsTransactionsType' + transactionType: + $ref: '#/components/schemas/EnumFundsTransactionsTransactionType' + transactionTypeAdditionalInfo: + type: string + description: | + Informação adicional do tipo do motivo, para preenchimento no caso de movimentações não delimitadas no domínio. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com o valor 'OUTROS'. + maxLength: 100 + pattern: '[\w\W\s]*' + transactionConversionDate: + type: string + format: date + description: Data da conversão da transação de movimentação do fundo de investimento. + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2023-01-07' + transactionQuotaPrice: + type: object + description: | + É o valor da cota utilizada na conversão para a realização da movimentação do cliente no fundo, conforme a regra prevista em regulamento - valor pode ser negativo. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 25 + pattern: '^-?\d{1,15}\.\d{2,8}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionQuotaQuantity: + type: string + format: double + description: | + Número de cotas convertidas na data da movimentação. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.25' + transactionValue: + type: object + description: Valor solicitado pelo cliente. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionGrossValue: + type: object + description: | + Valor da movimentação que se refere a quantidade da cota x valor da cota da movimentação. + Nos casos em que não houver movimentação de cotas, por exemplo: amortização, não considerar a regra descrita. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + incomeTax: + type: object + description: | + Valor do Imposto de Renda (IR) retido na fonte considerando a alíquota vigente na data da movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + financialTransactionTax: + type: object + description: | + Valor do Imposto sobre Operações Financeiras (IOF) retido na fonte considerando a alíquota vigente na data da movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionExitFee: + type: object + description: | + Valor da taxa de saída considerado na movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionNetValue: + type: object + description: | + Valor líquido da movimentação posterior à dedução de impostos (IOF e IR) e taxa de saída. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + additionalProperties: false + ResponseFundsTransactionsCurrentData: + type: object + description: Informações da posição do fundo de investimento a que se refere investmentId. + required: + - transactionId + - type + - transactionType + - transactionConversionDate + - transactionQuotaPrice + - transactionQuotaQuantity + - transactionValue + - transactionGrossValue + properties: + transactionId: + type: string + description: Código ou identificador único prestado pela instituição que mantém a representação individual do movimento na posição do fundo. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + type: + $ref: '#/components/schemas/EnumFundsTransactionsCurrentType' + transactionType: + $ref: '#/components/schemas/EnumFundsTransactionsCurrentTransactionType' + transactionTypeAdditionalInfo: + type: string + description: | + Informação adicional do tipo do motivo, para preenchimento no caso de movimentações não delimitadas no domínio. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com o valor 'OUTROS'. + maxLength: 100 + pattern: '[\w\W\s]*' + transactionConversionDate: + type: string + format: date + description: Data da conversão da transação de movimentação do fundo de investimento. + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2023-01-07' + transactionQuotaPrice: + type: object + description: | + É o valor da cota utilizada na conversão para a realização da movimentação do cliente no fundo, conforme a regra prevista em regulamento - valor pode ser negativo. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 25 + pattern: '^-?\d{1,15}\.\d{2,8}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionQuotaQuantity: + type: string + format: double + description: | + Número de cotas convertidas na data da movimentação. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.25' + transactionValue: + type: object + description: Valor solicitado pelo cliente. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionGrossValue: + type: object + description: | + Valor da movimentação que se refere a quantidade da cota x valor da cota da movimentação. + Nos casos em que não houver movimentação de cotas, por exemplo: amortização, não considerar a regra descrita. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + incomeTax: + type: object + description: | + Valor do Imposto de Renda (IR) retido na fonte considerando a alíquota vigente na data da movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + financialTransactionTax: + type: object + description: | + Valor do Imposto sobre Operações Financeiras (IOF) retido na fonte considerando a alíquota vigente na data da movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionExitFee: + type: object + description: | + Valor da taxa de saída considerado na movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionNetValue: + type: object + description: | + Valor líquido da movimentação posterior à dedução de impostos (IOF e IR) e taxa de saída. + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + additionalProperties: false + MetaSingle: + type: object + description: Meta informação referente a API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + FundsMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + FundsProductListLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + last: + type: string + format: uri + maxLength: 2000 + description: URI da última página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%.\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%\+.~#?&\/\/=]*)$' + FundsLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + FundsBalancesBlockedAmount: + type: object + description: Valor não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros). + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + FundsBalancesFinancialTransactionTaxProvision: + type: object + description: Valor do imposto considerando a alíquota vigente na data de referência. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + example: '50.02' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + FundsBalancesGrossAmount: + type: object + description: 'Valor do investimento que se refere a quantidade da cota x valor da cota, atualizado na data de referência.' + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + FundsBalancesIncomeTaxProvision: + type: object + description: Valor do imposto de renda provisionado considerando a alíquota vigente na data de referência. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + example: '50.02' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + FundsBalancesNetAmount: + type: object + description: Valor do investimento atualizado na data de referência, posterior a dedução de impostos (IOF e IR) e taxa de saída, caso a instituição considere este valor na composição do saldo líquido. Este valor considera o valor bloqueado (blockedAmount). + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + FundsBalancesQuotaGrossPriceValue: + type: object + description: Valor bruto da cota atualizado na data de referência. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,8}$' + maxLength: 25 + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + EnumFundsTransactionsType: + type: string + description: | + Tipo de movimentação (Entrada ou Saída). + + ENTRADA: APLICACAO, TRANSFERENCIA_COTAS, OUTROS. + + SAIDA: RESGATE, COME_COTAS, TRANSFERENCIA_COTAS, AMORTIZACAO, OUTROS. + enum: + - ENTRADA + - SAIDA + example: ENTRADA + EnumFundsTransactionsTransactionType: + type: string + description: | + O campo deve classificar a transação de movimentação de investimento em um dos tipos descritos (amortização, transferência de cotas, aplicação, resgate ou come-cotas). + A opção OUTROS só deve ser utilizada para os casos em que de fato a transação compartilhada não possa ser classificada como um dos itens deste Enum, e nesse caso deve-se preencher informações adicionais. + enum: + - AMORTIZACAO + - TRANSFERENCIA_COTAS + - APLICACAO + - RESGATE + - COME_COTAS + - OUTROS + example: AMORTIZACAO + EnumFundsTransactionsCurrentType: + type: string + description: | + Tipo de movimentação (Entrada ou Saída). + + ENTRADA: APLICACAO, TRANSFERENCIA_COTAS, OUTROS. + + SAIDA: RESGATE, COME_COTAS, TRANSFERENCIA_COTAS, AMORTIZACAO, OUTROS. + enum: + - ENTRADA + - SAIDA + example: ENTRADA + EnumFundsTransactionsCurrentTransactionType: + type: string + description: | + O campo deve classificar a transação de movimentação de investimento em um dos tipos descritos (amortização, transferência de cotas, aplicação, resgate ou come-cotas). + A opção OUTROS só deve ser utilizada para os casos em que de fato a transação compartilhada não possa ser classificada como um dos itens deste Enum, e nesse caso deve-se preencher informações adicionais. + enum: + - AMORTIZACAO + - TRANSFERENCIA_COTAS + - APLICACAO + - RESGATE + - COME_COTAS + - OUTROS + example: AMORTIZACAO + ResponseErrorMetaSingle: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + $ref: '#/components/schemas/MetaOnlyRequestDateTime' + MetaOnlyRequestDateTime: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + ResponseErrorWithAbleAdditionalProperties: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + $ref: '#/components/schemas/MetaWithAbleAdditionalProperties' + MetaWithAbleAdditionalProperties: + type: object + description: Meta informações referente à API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + parameters: + InvestmentId: + name: investmentId + in: path + description: Identifica de forma única o relacionamento do cliente com o fundo, mantendo as regras de imutabilidade dentro da instituição transmissora. + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + example: '92792126019929200000000000000000000000000' + Authorization: + name: Authorization + in: header + description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado + required: true + schema: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + xFapiAuthDate: + name: x-fapi-auth-date + in: header + description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a RFC7231. Exemplo: Sun, 10 Sep 2017 19:43:31 UTC.' + required: false + schema: + type: string + pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$' + minLength: 29 + maxLength: 29 + xFapiCustomerIpAddress: + name: x-fapi-customer-ip-address + in: header + description: O endereço IP do usuário se estiver atualmente logado com o receptor. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiInteractionId: + name: x-fapi-interaction-id + in: header + description: Um UUID RFC4122 usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela receptora (client) e o seu valor deve ser "espelhado" pela transmissora (server) no cabeçalho de resposta. + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + xCustomerUserAgent: + name: x-customer-user-agent + in: header + description: Indica o user-agent que o usuário utiliza. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + page: + name: page + in: query + description: Número da página que está sendo requisitada (o valor da primeira página é 1). + schema: + type: integer + default: 1 + minimum: 1 + maximum: 2147483647 + format: int32 + pageSize: + name: page-size + in: query + description: Quantidade total de registros por páginas. A transmissora deve considerar entrada como 25, caso seja informado algum valor menor pela receptora. Enquanto houver mais que 25 registros a enviar, a transmissora deve considerar o mínimo por página como 25. Somente a última página retornada (ou primeira, no caso de página única) pode conter menos de 25 registros. Mais informações, acesse Especificações de APIs > Padrões > Paginação. + schema: + type: integer + default: 25 + minimum: 25 + format: int32 + maximum: 1000 + pagination-key: + name: pagination-key + in: query + description: 'Identificador de rechamada, utilizado para evitar a contagem de chamadas ao endpoint durante a paginação.' + schema: + type: string + maxLength: 2048 + pattern: '[\w\W\s]*' + fromTransactionConversionDate: + name: fromTransactionConversionDate + description: | + Data inicial de filtragem. + + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionConversionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + toTransactionConversionDate: + name: toTransactionConversionDate + description: | + Data final de filtragem. + + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionConversionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + fromTransactionConversionDateCurrent: + name: fromTransactionConversionDate + description: | + Data inicial de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionConversionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + toTransactionConversionDateCurrent: + name: toTransactionConversionDate + description: | + Data final de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionConversionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + securitySchemes: + OAuth2AuthorizationCode: + type: oauth2 + description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados. + flows: + authorizationCode: + authorizationUrl: 'https://authserver.example/authorization' + tokenUrl: 'https://authserver.example/token' + scopes: + funds: Escopo necessário para acesso à API funds. O controle dos endpoints específicos é feito via permissions. + responses: + OkResponseFundsProductList: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseFundsProductList' + OkResponseFundsProductIdentification: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseFundsProductIdentification' + ResponseFundsBalances: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseFundsBalances' + OKResponseFundsTransactions: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseFundsTransactions' + OKResponseFundsTransactionsCurrent: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseFundsTransactionsCurrent' + BadRequest: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Forbidden: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + GatewayTimeout: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + InternalServerError: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Locked: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + MethodNotAllowed: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + NotAcceptable: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + NotFound: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TooManyRequests: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Unauthorized: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + UnprocessableEntity: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Default: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + SiteIsOverloaded: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + BadRequestWithAdditionalProperties: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + ForbiddenWithAdditionalProperties: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + GatewayTimeoutWithAdditionalProperties: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + InternalServerErrorWithAdditionalProperties: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + LockedWithAdditionalProperties: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + MethodNotAllowedWithAdditionalProperties: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + NotAcceptableWithAdditionalProperties: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + NotFoundWithAdditionalProperties: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + TooManyRequestsWithAdditionalProperties: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + UnauthorizedWithAdditionalProperties: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + UnprocessableEntityWithAdditionalProperties: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + DefaultWithAdditionalProperties: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + SiteIsOverloadedWithAdditionalProperties: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' diff --git a/swagger-apis/funds/index.html b/swagger-apis/funds/index.html index 00bbf6e2f..05736ef41 100644 --- a/swagger-apis/funds/index.html +++ b/swagger-apis/funds/index.html @@ -45,8 +45,11 @@ window.onload = function() { // Begin Swagger UI call region const ui = SwaggerUIBundle({ - urls: [ {"name": "1.0.0-rc1.0", "url": "./1.0.0-rc1.0.yml"}], - "urls.primaryName": "1.0.0-rc1.0", // default spec + urls: [ {"name": "1.0.0-rc1.0", "url": "./1.0.0-rc1.0.yml"}, + {"name": "1.0.0-rc2.0", "url": "./1.0.0-rc2.0.yml"}, + {"name": "1.0.0-rc3.0", "url": "./1.0.0-rc3.0.yml"}, + {"name": "1.0.0", "url": "./1.0.0.yml"}], + "urls.primaryName": "1.0.0", // default spec dom_id: '#swagger-ui', deepLinking: true, supportedSubmitMethods:[], diff --git a/swagger-apis/resources/2.1.0.yml b/swagger-apis/resources/2.1.0.yml new file mode 100644 index 000000000..18b26f6ad --- /dev/null +++ b/swagger-apis/resources/2.1.0.yml @@ -0,0 +1,472 @@ +openapi: 3.0.0 +info: + title: API Resources - Open Finance Brasil + description: | + API que trata da consulta do status de recursos para o Open Finance Brasil - Fase 2.\ + Não possui segregação entre pessoa natural e pessoa jurídica. + + # Orientações importantes + - A API resources lista os recursos vinculados ao consentimento específico, identificado por `consentId` e vinculado ao token enviado no header `Authorization`. + - Os `STATUS` dos recursos listados DEVEM considerar não apenas o consentimento vinculado mas também a disponibilidade do recurso na instituição transmissora dos dados. + - A `permission` específica desta API - `RESOURCES_READ` - DEVE ser solicitada pela instituição receptora na ocasião do pedido de criação do consentimento. + - A consulta à API Resources não é obrigatória por parte das instituições receptoras - esta API foi criada para dar visibilidade da existência de ocorrências que possam impedir o compartilhamento de determinados recursos por parte da instituição transmissora dos dados. + - O identificador do recurso devolvido na API Resources - `resourceId` - quando apresentado corresponde ao mesmo identificador designado para o recurso em sua API específica, o seja: o `resourceId` corresponde ao `accountId` da API accounts, ao `creditCardAccountId` da API de conta + pós-paga e assim sucessivamente. + + ## Status previstos para os recursos listados na API Resources + - AVAILABLE: indica que o recurso encontra-se disponível e o(s) consentimento(s) associado(s) possui(em) status `AUTHORISED`. + - UNAVAILABLE: indica que o recurso não está mais disponível, por exemplo, em caso de uma conta encerrada. + - TEMPORARILY_UNAVAILABLE: indica que o recurso encontra-se temporariamente indisponível, embora o(s) consentimento(s) associado(s) possua(m) status `AUTHORISED`. + Caso de exemplo: conta temporariamente bloqueada por suspeita de fraude. + - PENDING_AUTHORISATION: indica a existência de pendências para o compartilhamento do recurso, por exemplo, em caso de alçada dupla, quando é necessário o consentimento de mais de um titular. + + ## Permissions necessárias para a API Resources + ### `/resources` + - permissions: + - GET: **RESOURCES_READ** + version: 2.1.0 + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' + contact: + name: Governança do Open Finance Brasil – Especificações + email: gt-interfaces@openbankingbr.org + url: 'https://openbanking-brasil.github.io/areadesenvolvedor/' +servers: + - url: 'https://api.banco.com.br/open-banking/resources/v2' + description: Servidor de Produção + - url: 'https://apih.banco.com.br/open-banking/resources/v2' + description: Servidor de Homologação +tags: + - name: Resources +paths: + /resources: + get: + tags: + - Resources + summary: Obtém a lista de recursos consentidos pelo cliente. + operationId: resourcesGetResources + description: Método para obter a lista de recursos mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + parameters: + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + responses: + '200': + $ref: '#/components/responses/OKResponseResourceList' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OpenId: + - openid + OAuth2Security: + - 'consent:consentId' + - resources +components: + schemas: + ResponseResourceList: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + type: object + required: + - resourceId + - type + - status + properties: + resourceId: + type: string + description: | + Identifica o recurso reportado pelo participante do Open Finance, no caso de: + Contas de depósito à vista, de poupança ou de pagamento pré-paga : corresponde ao accountId; + Conta de pagamento pós-paga: corresponde ao creditCardAccountId; + Empréstimos, Financiamentos, Direitos creditórios descontados e Adiantamento a depositantes: corresponde ao contractId. + Renda Fixa Crédito, Renda Fixa Bancária, Renda Variável, Títulos do Tesouro Direto e Fundos de Investimentos: corresponde ao investmentId + minLength: 1 + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: 25cac914-d8ae-6789-b215-650a6215820d + type: + type: string + enum: + - ACCOUNT + - CREDIT_CARD_ACCOUNT + - LOAN + - FINANCING + - UNARRANGED_ACCOUNT_OVERDRAFT + - INVOICE_FINANCING + - BANK_FIXED_INCOME + - CREDIT_FIXED_INCOME + - VARIABLE_INCOME + - TREASURE_TITLE + - FUND + description: | + Tipo de recurso (vide Enum): + - Account - Conta de depósito à vista, poupança ou pagamento pré-paga + - Credit Card Account - Conta de pagamento pós-paga (Cartão de Crédito) + - Loan - Empréstimo + - Financing - Financiamento + - Unarranged Account Overdraft - Cheque Especial + - Invoice Financing - Financiamento de Fatura + - Bank Fixed Income - Renda Fixa Bancária + - Credit Fixed Income - Renda Fixa Crédito + - Variabel Income - Renda Variável + - Treasure Title - Título do Tesouro Direto + - Fund - Fundo de Investimento + example: ACCOUNT + status: + type: string + enum: + - AVAILABLE + - UNAVAILABLE + - TEMPORARILY_UNAVAILABLE + - PENDING_AUTHORISATION + description: | + Tipo de status de recurso (vide Enum): + Available - Disponível + Unavailable - Indisponível + Temporarily Unavailable - Temporariamente Indisponível + Pending Authorisation - Pendente de Autorização + example: AVAILABLE + description: Lista de recursos e seus respectivos status. + links: + $ref: '#/components/schemas/Links' + meta: + $ref: '#/components/schemas/Meta' + Links: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + last: + type: string + format: uri + maxLength: 2000 + description: URI da última página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + Meta: + type: object + description: Meta informações referente à API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + ResponseError: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + XFapiInteractionId: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + description: 'Um UID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação. Se fornecido, o transmissor deve "reproduzir" esse valor no cabeçalho de resposta.' + ResponseErrorWithAbleAdditionalProperties: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + $ref: '#/components/schemas/Meta' + parameters: + Authorization: + name: Authorization + in: header + description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado + required: true + schema: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + page: + name: page + in: query + description: Número da página que está sendo requisitada (o valor da primeira página é 1). + schema: + type: integer + default: 1 + minimum: 1 + maximum: 2147483647 + format: int32 + pageSize: + name: page-size + in: query + description: Quantidade total de registros por páginas. + schema: + type: integer + default: 25 + minimum: 1 + format: int32 + maximum: 1000 + xCustomerUserAgent: + name: x-customer-user-agent + in: header + description: Indica o user-agent que o usuário utiliza. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiAuthDate: + name: x-fapi-auth-date + in: header + description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a [RFC7231](https://tools.ietf.org/html/rfc7231).Exemplo: Sun, 10 Sep 2017 19:43:31 UTC' + required: false + schema: + type: string + pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$' + minLength: 29 + maxLength: 29 + xFapiCustomerIpAddress: + name: x-fapi-customer-ip-address + in: header + description: O endereço IP do usuário se estiver atualmente logado com o receptor. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiInteractionId: + name: x-fapi-interaction-id + in: header + description: 'Um UID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação. Se fornecido, o transmissor deve "reproduzir" esse valor no cabeçalho de resposta.' + required: false + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + securitySchemes: + OpenId: + type: openIdConnect + openIdConnectUrl: 'https://auth.mockbank.poc.raidiam.io/.well-known/openid-configuration' + OAuth2Security: + type: oauth2 + description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados. + flows: + authorizationCode: + authorizationUrl: 'https://authserver.example/authorization' + tokenUrl: 'https://authserver.example/token' + scopes: + resources: Escopo necessário para acesso à API Resources. O controle dos endpoints específicos é feito via permissions. + responses: + OKResponseResourceList: + description: Dados de status dos recursos obtidos com sucesso. + headers: + x-fapi-interaction-id: + schema: + $ref: '#/components/schemas/XFapiInteractionId' + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseResourceList' + BadRequest: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + Forbidden: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + InternalServerError: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + GatewayTimeout: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + MethodNotAllowed: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + NotAcceptable: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + NotFound: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + TooManyRequests: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + Unauthorized: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + SiteIsOverloaded: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + Default: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' \ No newline at end of file diff --git a/swagger-apis/resources/index.html b/swagger-apis/resources/index.html index 4e444eab0..604a5ee53 100644 --- a/swagger-apis/resources/index.html +++ b/swagger-apis/resources/index.html @@ -54,8 +54,9 @@ {"name": "2.0.0-RC1.0", "url": "./2.0.0-RC1.0.yml"}, {"name": "2.0.0", "url": "./2.0.0.yml"}, {"name": "2.0.1", "url": "./2.0.1.yml"}, - {"name": "2.1.0-rc1.0", "url": "./2.1.0-rc1.0.yml"}], - "urls.primaryName": "2.1.0-rc1.0", // default spec + {"name": "2.1.0-rc1.0", "url": "./2.1.0-rc1.0.yml"}, + {"name": "2.1.0", "url": "./2.1.0.yml"}], + "urls.primaryName": "2.1.0", // default spec dom_id: '#swagger-ui', deepLinking: true, supportedSubmitMethods:[], diff --git a/swagger-apis/treasure-titles/1.0.0-rc2.0.yml b/swagger-apis/treasure-titles/1.0.0-rc2.0.yml new file mode 100644 index 000000000..ce03a41f8 --- /dev/null +++ b/swagger-apis/treasure-titles/1.0.0-rc2.0.yml @@ -0,0 +1,1500 @@ +openapi: 3.0.0 +info: + title: API Treasure Titles - Open Finance Brasil + description: | + API de informações de operações de Títulos do Tesouro Direto Open Finance Brasil – Fase 4. API que retorna informações de operações de investimento do tipo Títulos do Tesouro Direto mantidas nas instituições transmissoras por seus clientes, incluindo dados como informações do produto, quantidade, saldos em posição do cliente e movimentações financeiras. Não possui segregação entre pessoa natural e pessoa jurídica. Requer consentimento do cliente para todos os endpoints. Devem ser considerados como escopo de exposição todos os títulos ofertados pelo Tesouro Direto. A exposição se dará por cada operação de títulos do Tesouro Direto contratada pelo cliente. + version: 1.0.0-rc2.0 + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' + contact: + name: Governança do Open Finance Brasil – Especificações + email: gt-interfaces@openbankingbr.org + url: 'https://openbanking-brasil.github.io/areadesenvolvedor/' +servers: + - url: 'https://api.banco.com.br/open-banking/treasure-titles/v1' + description: Servidor de Produção + - url: 'https://apih.banco.com.br/open-banking/treasure-titles/v1' + description: Servidor de Homologação +tags: + - name: Product List + description: Obtém a lista de operações de Títulos do Tesouro Direto mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + - name: Product Identification + description: Obtém os dados da operação de Títulos do Tesouro Direto identificada por investmentId. + - name: Balances + description: Obtém a posição da operação de Títulos do Tesouro Direto identificada por investmentId. + - name: Transactions + description: Obtém as movimentações da operação (últimos 12 meses) de Títulos do Tesouro Direto identificada por investmentId. + - name: Transactions Current + description: 'Obtém as movimentações recentes da operação de Títulos do Tesouro Direto identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' +paths: + /investments: + get: + tags: + - Product List + summary: Obtém a lista de operações de Títulos do Tesouro Direto mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + operationId: treasureTitlesGetInvestments + description: Obtém a lista de operações de Títulos do Tesouro Direto mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + parameters: + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + responses: + '200': + $ref: '#/components/responses/OkResponseTreasureTitlesProductList' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - treasure-titles + '/investments/{investmentId}': + get: + tags: + - Product Identification + summary: Obtém os dados da operação de Títulos do Tesouro Direto identificada por investmentId. + operationId: treasureTitlesGetInvestmentsInvestmentId + description: Obtém os dados da operação de Títulos do Tesouro Direto identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseTreasureTitlesIdentifyProduct' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - treasure-titles + '/investments/{investmentId}/balances': + get: + tags: + - Balances + summary: Obtém a posição da operação de Títulos do Tesouro Direto identificada por investmentId. + operationId: treasureTitlesGetInvestmentsInvestmentIdBalances + description: Obtém a posição da operação de Títulos do Tesouro Direto identificada por investmentId. + parameters: + - name: investmentId + in: path + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/OkResponseTreasureTitlesBalances' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - treasure-titles + '/investments/{investmentId}/transactions': + get: + tags: + - Transactions + summary: Obtém as movimentações da operação (últimos 12 meses) de Títulos do Tesouro Direto identificada por investmentId. + operationId: treasureTitlesGetInvestmentsInvestmentIdTransactions + description: Obtém as movimentações da operação (últimos 12 meses) de Títulos do Tesouro Direto identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDate' + - $ref: '#/components/parameters/toTransactionDate' + responses: + '200': + $ref: '#/components/responses/ResponseTreasureTitlesProductTransactions' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - treasure-titles + '/investments/{investmentId}/transactions-current': + get: + tags: + - Transactions Current + summary: 'Obtém as movimentações recentes da operação de Títulos do Tesouro Direto identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + operationId: treasureTitlesGetInvestmentsInvestmentIdTransactionsCurrent + description: 'Obtém as movimentações recentes da operação de Títulos do Tesouro Direto identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDateMaxLimited' + - $ref: '#/components/parameters/toTransactionDateMaxLimited' + responses: + '200': + $ref: '#/components/responses/ResponseTreasureTitlesProductTransactionsCurrent' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - treasure-titles +components: + schemas: + LockedWithAdditionalProperties: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + additionalProperties: false + meta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + additionalProperties: false + ResponseError: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + ResponseTreasureTitlesListProduct: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseTreasureTitlesListProductData' + links: + $ref: '#/components/schemas/TreasureTitlesLinks' + meta: + $ref: '#/components/schemas/TreasureTitlesMeta' + additionalProperties: false + TreasureTitlesMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + TreasureTitlesLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + CurrencyCode: + type: string + pattern: '^[A-Z]{3}$' + maxLength: 3 + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + example: BRL + ResponseTreasureTitlesBalances: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/TreasureTitlesBalances' + links: + $ref: '#/components/schemas/TreasureTitlesLinks' + meta: + $ref: '#/components/schemas/TreasureTitlesMeta' + additionalProperties: false + TreasureTitlesProductTransaction: + type: object + required: + - type + - transactionType + - transactionDate + - transactionUnitPrice + - transactionQuantity + - transactionGrossValue + - transactionNetValue + - transactionId + properties: + type: + $ref: '#/components/schemas/TreasureTitlesType' + transactionType: + $ref: '#/components/schemas/TreasureTitlesTransactionType' + transactionTypeAdditionalInfo: + description: | + Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não de limitadas no domínio. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com o valor 'OUTROS'. + maxLength: 100 + pattern: '[\w\W\s]*' + example: '' + type: string + transactionDate: + $ref: '#/components/schemas/TreasureTitlesTransactionDate' + transactionUnitPrice: + $ref: '#/components/schemas/TreasureTitlesTransactionUnitPrice' + transactionQuantity: + $ref: '#/components/schemas/TreasureTitlesTransactionQuantity' + transactionGrossValue: + $ref: '#/components/schemas/TreasureTitlesTransactionGrossValue' + incomeTax: + description: | + Valor do imposto de renda recolhido na transação + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesIncomeTaxAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + financialTransactionTax: + description: | + Valor do IOF recolhido na transação + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesFinancialTransactionTaxAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + transactionNetValue: + $ref: '#/components/schemas/TreasureTitlesTransactionNetValue' + remunerationTransactionRate: + $ref: '#/components/schemas/TreasureTitlesRemunerationTransactionRate' + transactionId: + $ref: '#/components/schemas/TreasureTitlesTransactionId' + ResponseTreasureTitlesIdentifyProduct: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/TreasureTitlesIdentifyProduct' + links: + $ref: '#/components/schemas/TreasureTitlesLinks' + meta: + $ref: '#/components/schemas/TreasureTitlesMeta' + additionalProperties: false + ResponseTreasureTitlesListProductData: + type: object + description: Lista de títulos de tesouro direto mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento + required: + - brandName + - companyCnpj + - investmentId + properties: + brandName: + $ref: '#/components/schemas/TreasureTitlesBrandName' + companyCnpj: + $ref: '#/components/schemas/TreasureTitlesCompanyCnpj' + investmentId: + $ref: '#/components/schemas/TreasureTitlesInvestmentId' + additionalProperties: false + ResponseTreasureTitlesProductList: + $ref: '#/components/schemas/ResponseTreasureTitlesListProduct' + ResponseTreasureTitlesProductTransactions: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/TreasureTitlesProductTransaction' + links: + $ref: '#/components/schemas/TreasureTitlesLinks' + meta: + $ref: '#/components/schemas/TreasureTitlesMetaTransaction' + additionalProperties: false + ResponseTreasureTitlesProductTransactionsCurrent: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/TreasureTitlesProductTransaction' + links: + $ref: '#/components/schemas/TreasureTitlesLinks' + meta: + $ref: '#/components/schemas/TreasureTitlesMetaTransaction' + additionalProperties: false + TreasureTitlesAmount: + description: Valor relacionado ao objeto. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.000004' + type: string + format: double + TreasureTitlesBalances: + type: object + required: + - referenceDateTime + - updatedUnitPrice + - grossAmount + - netAmount + - incomeTax + - blockedBalance + - purchaseUnitPrice + - quantity + properties: + referenceDateTime: + $ref: '#/components/schemas/TreasureTitlesReferenceDateTime' + updatedUnitPrice: + $ref: '#/components/schemas/TreasureTitlesUpdatedUnitPrice' + grossAmount: + $ref: '#/components/schemas/TreasureTitlesGrossAmount' + netAmount: + $ref: '#/components/schemas/TreasureTitlesNetAmount' + incomeTax: + $ref: '#/components/schemas/TreasureTitlesIncomeTax' + financialTransactionTax: + $ref: '#/components/schemas/TreasureTitlesFinancialTransactionTax' + blockedBalance: + $ref: '#/components/schemas/TreasureTitlesBlockedBalance' + purchaseUnitPrice: + $ref: '#/components/schemas/TreasureTitlesPurchaseUnitPrice' + quantity: + $ref: '#/components/schemas/TreasureTitlesQuantity' + TreasureTitlesBlockedBalance: + description: 'Valor não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros).' + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesBlockedBalanceAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesBlockedBalanceAmount: + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesBrandName: + description: | + Nome da Marca reportada pelo participante no Open Finance. + Recomenda-se utilizar, sempre que possível, o mesmo nome de marca atribuído no + campo do diretório Customer Friendly Server Name (Authorisation Server). + maxLength: 80 + pattern: '[\w\W\s]*' + example: Organização A + type: string + TreasureTitlesCalculation: + description: Base de cálculo (dias úteis ou dias corridos) + example: DIAS_CORRIDOS + enum: + - DIAS_UTEIS + - DIAS_CORRIDOS + type: string + TreasureTitlesCompanyCnpj: + description: | + Número completo do CNPJ da instituição responsável pelo Cadastro - + o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. + Deve-se ter apenas os números do CNPJ, sem máscara + maxLength: 14 + pattern: '^\d{14}$' + example: '21128159000166' + type: string + TreasureTitlesCurrency: + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + type: string + TreasureTitlesDueDate: + description: Data de vencimento do título. + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + type: string + format: date + TreasureTitlesFinancialTransactionTax: + description: | + IOF provisionado. + + Caso seja um produto com alíquota zero esse objeto pode ser enviado sem valores (vazio). + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesFinancialTransactionTaxAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesFinancialTransactionTaxAmount: + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesFinancialTransactionTaxCurrency: + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + type: string + TreasureTitlesFinancialTransactionTaxFinancialTransactionTaxAmount: + description: Valor relacionado ao objeto + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesGrossAmount: + description: | + Valor do investimento anterior à dedução de impostos, taxas e + tarifas (se houver), atualizado (a mercado) na data de referência. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesGrossAmountAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesGrossAmountAmount: + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesIdentifyProduct: + type: object + required: + - isinCode + - productName + - remuneration + - dueDate + - purchaseDate + - voucherPaymentIndicator + properties: + isinCode: + $ref: '#/components/schemas/TreasureTitlesIsinCode' + productName: + $ref: '#/components/schemas/TreasureTitlesProductName' + remuneration: + $ref: '#/components/schemas/TreasureTitlesRemuneration' + dueDate: + $ref: '#/components/schemas/TreasureTitlesDueDate' + purchaseDate: + $ref: '#/components/schemas/TreasureTitlesPurchaseDate' + voucherPaymentIndicator: + $ref: '#/components/schemas/TreasureTitlesVoucherPaymentIndicator' + voucherPaymentPeriodicity: + $ref: '#/components/schemas/TreasureTitlesVoucherPaymentPeriodicity' + voucherPaymentPeriodicityAdditionalInfo: + $ref: '#/components/schemas/TreasureTitlesVoucherPaymentPeriodicityAdditionalInfo' + TreasureTitlesIncomeTax: + description: | + Valor do imposto provisionado considerando a alíquota vigente na data de referência. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesIncomeTaxAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesIncomeTaxAmount: + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesIncomeTaxCurrency: + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + type: string + TreasureTitlesIncomeTaxIncomeTaxAmount: + description: Valor relacionado ao objeto + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesIndexer: + description: 'Índice utilizado como referência para a correção da rentabilidade e/ou rendimentos do ativo (CDI, DI , TR, IPCA, IGP_M, IGP_DI, INPC, BCP, TLC, SELIC, PRE_FIXADO e OUTROS)' + example: CDI + enum: + - CDI + - DI + - TR + - IPCA + - IGP_M + - IGP_DI + - INPC + - BCP + - TLC + - SELIC + - PRE_FIXADO + - OUTROS + type: string + TreasureTitlesIndexerAdditionalInfo: + description: | + Informações adicionais do indexador. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido com o valor 'OUTROS'. + maxLength: 50 + pattern: '[\w\W\s]*' + example: Dólar + type: string + TreasureTitlesInvestmentId: + description: | + Identifica de forma única o relacionamento do cliente com o + produto, mantendo as regras de imutabilidade dentro da instituição + transmissora. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + type: string + TreasureTitlesIsinCode: + description: | + Código ISIN da emissão, Código ISIN do produto, Código da emissora + : código universal que identifica cada valor mobiliário ou instrumento + financeiro, conforme Norma ISO 6166. + maxLength: 12 + pattern: '^[A-Z]{2}([A-Z0-9]){9}\d{1}$' + example: BRCST4CTF001 + type: string + TreasureTitlesMetaTransaction: + type: object + description: Meta informações referente a API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + TreasureTitlesNetAmount: + description: 'Valor do investimento posterior a dedução de impostos, taxas e tarifas (se houver), atualizado (a mercado) na data de referência.' + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesNetAmountAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesNetAmountAmount: + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesPostFixedIndexerPercentage: + description: | + Percentual do indexador da aquisição do contrato. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido de forma diferente de ‘PRE FIXADO’. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '1.100000' + type: string + format: double + TreasureTitlesPreFixedRate: + description: | + Valor da taxa da aquisição do contrato. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido com o valor ‘PRE FIXADO’. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '0.300000' + type: string + format: double + TreasureTitlesProductName: + description: Descrição do ativo em questão. + maxLength: 70 + pattern: '[\w\W\s]*' + example: TESOURODIRETO + type: string + TreasureTitlesPurchaseDate: + description: Data de aquisição do cliente. + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + type: string + format: date + TreasureTitlesPurchaseUnitPrice: + description: Valor unitário negociado com o cliente na data de aquisição. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesQuantity: + description: Quantidade de títulos detidos na data da posição do cliente. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$ ' + format: double + type: string + example: '1000.015' + TreasureTitlesRatePeriodicity: + description: 'Periodicidade da taxa de remuneração (mensal, anual, diário e semestral)' + example: DIARIO + enum: + - MENSAL + - ANUAL + - DIARIO + - SEMESTRAL + type: string + TreasureTitlesReferenceDateTime: + description: Data da última posição consolidada disponível a que se referem os dados transacionais do cliente disponíveis nos canais eletrônicos. + maxLength: 20 + pattern: '(^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$)' + example: '2022-07-21T17:32:00Z' + type: string + format: date-time + TreasureTitlesRemuneration: + description: Objeto para detalhamento de remuneração do titulo. + type: object + required: + - indexer + - ratePeriodicity + - calculation + properties: + indexer: + $ref: '#/components/schemas/TreasureTitlesIndexer' + indexerAdditionalInfo: + $ref: '#/components/schemas/TreasureTitlesIndexerAdditionalInfo' + preFixedRate: + $ref: '#/components/schemas/TreasureTitlesPreFixedRate' + postFixedIndexerPercentage: + $ref: '#/components/schemas/TreasureTitlesPostFixedIndexerPercentage' + ratePeriodicity: + $ref: '#/components/schemas/TreasureTitlesRatePeriodicity' + calculation: + $ref: '#/components/schemas/TreasureTitlesCalculation' + TreasureTitlesRemunerationTransactionRate: + description: | + Taxa de remuneração da movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '0.300000' + type: string + format: double + TreasureTitlesTransactionDate: + description: Data da movimentação. + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + type: string + format: date + TreasureTitlesTransactionGrossValue: + description: | + Valor bruto da movimentação + + Nos casos em que se tratar de movimento de saída e a instituição não tiver a informação de IR recolhido na fonte, o valor bruto e o valor líquido expostos deverão ser iguais. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesTransactionGrossValueAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesTransactionGrossValueCurrency' + TreasureTitlesTransactionGrossValueAmount: + description: 'Valor bruto da transação (Preço unitário da movimentação x Quantidade) ' + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesTransactionGrossValueCurrency: + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + type: string + TreasureTitlesTransactionId: + description: Código ou identificador único prestado pela instituição para individualizar o movimento. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + type: string + TreasureTitlesTransactionNetValue: + description: | + Valor líquido da transação + + Nos casos em que se tratar de movimento de saída e a instituição não tiver a informação de IR recolhido na fonte, o valor bruto e o valor líquido expostos deverão ser iguais. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesTransactionNetValueAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesTransactionNetValueCurrency' + TreasureTitlesTransactionNetValueAmount: + description: Valor relacionado ao objeto + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesTransactionNetValueCurrency: + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + type: string + TreasureTitlesTransactionQuantity: + description: Quantidade de títulos envolvidos na movimentação. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.25' + type: string + format: double + TreasureTitlesTransactionsLinks: + $ref: '#/components/schemas/TreasureTitlesLinks' + TreasureTitlesTransactionType: + description: 'Compra, venda, cancelamento, vencimento, pagamento de juros, amortização, transferência de titularidade, transferência de custódia e outros.' + example: AMORTIZACAO + enum: + - COMPRA + - VENDA + - CANCELAMENTO + - VENCIMENTO + - PAGAMENTO_JUROS + - AMORTIZACAO + - TRANSFERENCIA_TITULARIDADE + - TRANSFERENCIA_CUSTODIA + - OUTROS + type: string + TreasureTitlesTransactionUnitPrice: + description: Preço unitário bruto negociado na transação. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesTransactionUnitPriceAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesTransactionUnitPriceCurrency' + TreasureTitlesTransactionUnitPriceAmount: + description: Valor relacionado ao objeto + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.04' + type: string + format: double + TreasureTitlesTransactionUnitPriceCurrency: + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + type: string + TreasureTitlesType: + description: | + Tipo de movimentação na visão de investimento (Nos casos de + pagamento de juros e amortização) fica convencionado que será considerado que + o tipo de movimento será saída. + example: ENTRADA + enum: + - ENTRADA + - SAIDA + type: string + TreasureTitlesUpdatedUnitPrice: + description: Valor bruto unitário atualizado (a mercado) na data de referência. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesVoucherPaymentIndicator: + description: Indicativo se há pagamento de cupom (Sim ou não). + example: SIM + enum: + - SIM + - NAO + type: string + TreasureTitlesVoucherPaymentPeriodicity: + description: | + Em caso de haver pagamento de cupom, descrever a periodicidade + (mensal, trimestral, semestral, anual, irregular e outros) + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'voucherPaymentIndicator' for preenchido com o valor 'SIM'. + example: MENSAL + enum: + - MENSAL + - TRIMESTRAL + - SEMESTRAL + - ANUAL + - IRREGULAR + - OUTROS + type: string + TreasureTitlesVoucherPaymentPeriodicityAdditionalInfo: + description: | + Informações adicionais da periodicidade de pagamento de cupom. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'voucherPaymentPeriodicity' for preenchido com o valor 'OUTROS'. + maxLength: 50 + pattern: '[\w\W\s]*' + example: Diária + type: string + securitySchemes: + OAuth2AuthorizationCode: + type: oauth2 + description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados. + flows: + authorizationCode: + authorizationUrl: 'https://authserver.example/authorization' + tokenUrl: 'https://authserver.example/token' + scopes: + treasure-titles: Escopo necessário para acesso à API Treasure Titles - Open Finance Brasil. O controle dos endpoints específicos é feito via permissions. + parameters: + InvestmentId: + name: investmentId + in: path + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + example: '92792126019929200000000000000000000000000' + Authorization: + name: Authorization + in: header + description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado + required: true + schema: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + pagination-key: + name: pagination-key + in: query + description: 'Identificador de rechamada, utilizado para evitar a contagem de chamadas ao endpoint durante a paginação.' + schema: + type: string + maxLength: 2048 + pattern: '[\w\W\s]*' + page: + name: page + in: query + description: Número da página que está sendo requisitada (o valor da primeira página é 1). + schema: + type: integer + default: 1 + minimum: 1 + maximum: 2147483647 + format: int32 + pageSize: + name: page-size + in: query + description: Quantidade total de registros por páginas. A transmissora deve considerar entrada como 25, caso seja informado algum valor menor pela receptora. Enquanto houver mais que 25 registros a enviar, a transmissora deve considerar o mínimo por página como 25. Somente a última página retornada (ou primeira, no caso de página única) pode conter menos de 25 registros. Mais informações, acesse Especificações de APIs > Padrões > Paginação. + schema: + type: integer + default: 25 + minimum: 25 + format: int32 + maximum: 1000 + xCustomerUserAgent: + name: x-customer-user-agent + in: header + description: Indica o user-agent que o usuário utiliza. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiAuthDate: + name: x-fapi-auth-date + in: header + description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a [RFC7231](https://tools.ietf.org/html/rfc7231).Exemplo: Sun, 10 Sep 2017 19:43:31 UTC' + required: false + schema: + type: string + pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$' + minLength: 29 + maxLength: 29 + xFapiCustomerIpAddress: + name: x-fapi-customer-ip-address + in: header + description: O endereço IP do usuário se estiver atualmente logado com o receptor. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiInteractionId: + name: x-fapi-interaction-id + in: header + description: Um UUID RFC4122 usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela receptora (client) e o seu valor deve ser "espelhado" pela transmissora (server) no cabeçalho de resposta. + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + fromTransactionDate: + name: fromTransactionDate + description: | + Data inicial de filtragem. + + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + fromTransactionDateMaxLimited: + name: fromTransactionDate + description: | + Data inicial de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + toTransactionDate: + name: toTransactionDate + description: | + Data final de filtragem. + + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + toTransactionDateMaxLimited: + name: toTransactionDate + description: | + Data final de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + responses: + OkResponseTreasureTitlesBalances: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseTreasureTitlesBalances' + OkResponseTreasureTitlesProductList: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseTreasureTitlesListProduct' + ResponseTreasureTitlesIdentifyProduct: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseTreasureTitlesIdentifyProduct' + ResponseTreasureTitlesProductTransactions: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseTreasureTitlesProductTransactions' + ResponseTreasureTitlesProductTransactionsCurrent: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseTreasureTitlesProductTransactions' + BadRequest: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + Forbidden: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + GatewayTimeout: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + InternalServerError: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + Locked: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + MethodNotAllowed: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotAcceptable: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotFound: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + TooManyRequests: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + Unauthorized: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + UnprocessableEntity: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + Default: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + SiteIsOverloaded: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + BadRequestWithAdditionalProperties: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + ForbiddenWithAdditionalProperties: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + GatewayTimeoutWithAdditionalProperties: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + InternalServerErrorWithAdditionalProperties: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + LockedWithAdditionalProperties: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + MethodNotAllowedWithAdditionalProperties: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + NotAcceptableWithAdditionalProperties: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + NotFoundWithAdditionalProperties: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + TooManyRequestsWithAdditionalProperties: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + UnauthorizedWithAdditionalProperties: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + UnprocessableEntityWithAdditionalProperties: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + DefaultWithAdditionalProperties: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + SiteIsOverloadedWithAdditionalProperties: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' diff --git a/swagger-apis/treasure-titles/1.0.0-rc3.0.yml b/swagger-apis/treasure-titles/1.0.0-rc3.0.yml new file mode 100644 index 000000000..16eb77a0c --- /dev/null +++ b/swagger-apis/treasure-titles/1.0.0-rc3.0.yml @@ -0,0 +1,1507 @@ +openapi: 3.0.0 +info: + title: API Treasure Titles - Open Finance Brasil + description: | + API de informações de operações de Títulos do Tesouro Direto Open Finance Brasil – Fase 4. API que retorna informações de operações de investimento do tipo Títulos do Tesouro Direto mantidas nas instituições transmissoras por seus clientes, incluindo dados como informações do produto, quantidade, saldos em posição do cliente e movimentações financeiras. Não possui segregação entre pessoa natural e pessoa jurídica. Requer consentimento do cliente para todos os endpoints. Devem ser considerados como escopo de exposição todos os títulos ofertados pelo Tesouro Direto. A exposição se dará por cada operação de títulos do Tesouro Direto contratada pelo cliente. + version: 1.0.0-rc3.0 + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' + contact: + name: Governança do Open Finance Brasil – Especificações + email: gt-interfaces@openbankingbr.org + url: 'https://openbanking-brasil.github.io/areadesenvolvedor/' +servers: + - url: 'https://api.banco.com.br/open-banking/treasure-titles/v1' + description: Servidor de Produção + - url: 'https://apih.banco.com.br/open-banking/treasure-titles/v1' + description: Servidor de Homologação +tags: + - name: Product List + description: Obtém a lista de operações de Títulos do Tesouro Direto mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + - name: Product Identification + description: Obtém os dados da operação de Títulos do Tesouro Direto identificada por investmentId. + - name: Balances + description: Obtém a posição da operação de Títulos do Tesouro Direto identificada por investmentId. + - name: Transactions + description: Obtém as movimentações da operação (últimos 12 meses) de Títulos do Tesouro Direto identificada por investmentId. + - name: Transactions Current + description: 'Obtém as movimentações recentes da operação de Títulos do Tesouro Direto identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' +paths: + /investments: + get: + tags: + - Product List + summary: Obtém a lista de operações de Títulos do Tesouro Direto mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + operationId: treasureTitlesGetInvestments + description: Obtém a lista de operações de Títulos do Tesouro Direto mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + parameters: + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + responses: + '200': + $ref: '#/components/responses/OkResponseTreasureTitlesProductList' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - treasure-titles + '/investments/{investmentId}': + get: + tags: + - Product Identification + summary: Obtém os dados da operação de Títulos do Tesouro Direto identificada por investmentId. + operationId: treasureTitlesGetInvestmentsInvestmentId + description: Obtém os dados da operação de Títulos do Tesouro Direto identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseTreasureTitlesIdentifyProduct' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - treasure-titles + '/investments/{investmentId}/balances': + get: + tags: + - Balances + summary: Obtém a posição da operação de Títulos do Tesouro Direto identificada por investmentId. + operationId: treasureTitlesGetInvestmentsInvestmentIdBalances + description: | + Obtém a posição da operação de Títulos do Tesouro Direto identificada por investmentId. + + Nos casos em que não houver posição para o investimento, ou seja, quantidade de ativos e valores monetários zerados, mas o mesmo ainda estiver no prazo de exposição (até 12 meses após a última movimentação), deve se retornar status code 200 e para o payload de retorno considerar os valores abaixo. Campos não obrigatórios não devem ser retornados: + + - Valores monetários: 0.00 + - Quantidade de ativos: 0.00 + - Data e hora da última posição: mesmo conteúdo do campo requestDateTime + parameters: + - name: investmentId + in: path + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/OkResponseTreasureTitlesBalances' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - treasure-titles + '/investments/{investmentId}/transactions': + get: + tags: + - Transactions + summary: Obtém as movimentações da operação (últimos 12 meses) de Títulos do Tesouro Direto identificada por investmentId. + operationId: treasureTitlesGetInvestmentsInvestmentIdTransactions + description: Obtém as movimentações da operação (últimos 12 meses) de Títulos do Tesouro Direto identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDate' + - $ref: '#/components/parameters/toTransactionDate' + responses: + '200': + $ref: '#/components/responses/ResponseTreasureTitlesProductTransactions' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - treasure-titles + '/investments/{investmentId}/transactions-current': + get: + tags: + - Transactions Current + summary: 'Obtém as movimentações recentes da operação de Títulos do Tesouro Direto identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + operationId: treasureTitlesGetInvestmentsInvestmentIdTransactionsCurrent + description: 'Obtém as movimentações recentes da operação de Títulos do Tesouro Direto identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDateMaxLimited' + - $ref: '#/components/parameters/toTransactionDateMaxLimited' + responses: + '200': + $ref: '#/components/responses/ResponseTreasureTitlesProductTransactionsCurrent' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - treasure-titles +components: + schemas: + LockedWithAdditionalProperties: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + additionalProperties: false + meta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + additionalProperties: false + ResponseError: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + ResponseTreasureTitlesListProduct: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseTreasureTitlesListProductData' + links: + $ref: '#/components/schemas/TreasureTitlesLinks' + meta: + $ref: '#/components/schemas/TreasureTitlesMeta' + additionalProperties: false + TreasureTitlesMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + TreasureTitlesLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + CurrencyCode: + type: string + pattern: '^[A-Z]{3}$' + maxLength: 3 + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + example: BRL + ResponseTreasureTitlesBalances: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/TreasureTitlesBalances' + links: + $ref: '#/components/schemas/TreasureTitlesLinks' + meta: + $ref: '#/components/schemas/TreasureTitlesMeta' + additionalProperties: false + TreasureTitlesProductTransaction: + type: object + required: + - type + - transactionType + - transactionDate + - transactionUnitPrice + - transactionQuantity + - transactionGrossValue + - transactionNetValue + - transactionId + properties: + type: + $ref: '#/components/schemas/TreasureTitlesType' + transactionType: + $ref: '#/components/schemas/TreasureTitlesTransactionType' + transactionTypeAdditionalInfo: + description: | + Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não de limitadas no domínio. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com o valor 'OUTROS'. + maxLength: 100 + pattern: '[\w\W\s]*' + example: '' + type: string + transactionDate: + $ref: '#/components/schemas/TreasureTitlesTransactionDate' + transactionUnitPrice: + $ref: '#/components/schemas/TreasureTitlesTransactionUnitPrice' + transactionQuantity: + $ref: '#/components/schemas/TreasureTitlesTransactionQuantity' + transactionGrossValue: + $ref: '#/components/schemas/TreasureTitlesTransactionGrossValue' + incomeTax: + description: | + Valor do imposto de renda recolhido na transação + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesIncomeTaxAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + financialTransactionTax: + description: | + Valor do IOF recolhido na transação + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesFinancialTransactionTaxAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + transactionNetValue: + $ref: '#/components/schemas/TreasureTitlesTransactionNetValue' + remunerationTransactionRate: + $ref: '#/components/schemas/TreasureTitlesRemunerationTransactionRate' + transactionId: + $ref: '#/components/schemas/TreasureTitlesTransactionId' + ResponseTreasureTitlesIdentifyProduct: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/TreasureTitlesIdentifyProduct' + links: + $ref: '#/components/schemas/TreasureTitlesLinks' + meta: + $ref: '#/components/schemas/TreasureTitlesMeta' + additionalProperties: false + ResponseTreasureTitlesListProductData: + type: object + description: Lista de títulos de tesouro direto mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento + required: + - brandName + - companyCnpj + - investmentId + properties: + brandName: + $ref: '#/components/schemas/TreasureTitlesBrandName' + companyCnpj: + $ref: '#/components/schemas/TreasureTitlesCompanyCnpj' + investmentId: + $ref: '#/components/schemas/TreasureTitlesInvestmentId' + additionalProperties: false + ResponseTreasureTitlesProductList: + $ref: '#/components/schemas/ResponseTreasureTitlesListProduct' + ResponseTreasureTitlesProductTransactions: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/TreasureTitlesProductTransaction' + links: + $ref: '#/components/schemas/TreasureTitlesLinks' + meta: + $ref: '#/components/schemas/TreasureTitlesMetaTransaction' + additionalProperties: false + ResponseTreasureTitlesProductTransactionsCurrent: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/TreasureTitlesProductTransaction' + links: + $ref: '#/components/schemas/TreasureTitlesLinks' + meta: + $ref: '#/components/schemas/TreasureTitlesMetaTransaction' + additionalProperties: false + TreasureTitlesAmount: + description: Valor relacionado ao objeto. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.000004' + type: string + format: double + TreasureTitlesBalances: + type: object + required: + - referenceDateTime + - updatedUnitPrice + - grossAmount + - netAmount + - incomeTax + - blockedBalance + - purchaseUnitPrice + - quantity + properties: + referenceDateTime: + $ref: '#/components/schemas/TreasureTitlesReferenceDateTime' + updatedUnitPrice: + $ref: '#/components/schemas/TreasureTitlesUpdatedUnitPrice' + grossAmount: + $ref: '#/components/schemas/TreasureTitlesGrossAmount' + netAmount: + $ref: '#/components/schemas/TreasureTitlesNetAmount' + incomeTax: + $ref: '#/components/schemas/TreasureTitlesIncomeTax' + financialTransactionTax: + $ref: '#/components/schemas/TreasureTitlesFinancialTransactionTax' + blockedBalance: + $ref: '#/components/schemas/TreasureTitlesBlockedBalance' + purchaseUnitPrice: + $ref: '#/components/schemas/TreasureTitlesPurchaseUnitPrice' + quantity: + $ref: '#/components/schemas/TreasureTitlesQuantity' + TreasureTitlesBlockedBalance: + description: 'Valor não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros).' + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesBlockedBalanceAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesBlockedBalanceAmount: + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesBrandName: + description: | + Nome da Marca reportada pelo participante no Open Finance. + Recomenda-se utilizar, sempre que possível, o mesmo nome de marca atribuído no + campo do diretório Customer Friendly Server Name (Authorisation Server). + maxLength: 80 + pattern: '[\w\W\s]*' + example: Organização A + type: string + TreasureTitlesCalculation: + description: Base de cálculo (dias úteis ou dias corridos) + example: DIAS_CORRIDOS + enum: + - DIAS_UTEIS + - DIAS_CORRIDOS + type: string + TreasureTitlesCompanyCnpj: + description: | + Número completo do CNPJ da instituição responsável pelo Cadastro - + o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. + Deve-se ter apenas os números do CNPJ, sem máscara + maxLength: 14 + pattern: '^\d{14}$' + example: '21128159000166' + type: string + TreasureTitlesCurrency: + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + type: string + TreasureTitlesDueDate: + description: Data de vencimento do título. + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + type: string + format: date + TreasureTitlesFinancialTransactionTax: + description: | + IOF provisionado. + + Caso seja um produto com alíquota zero esse objeto pode ser enviado sem valores (vazio). + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesFinancialTransactionTaxAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesFinancialTransactionTaxAmount: + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesFinancialTransactionTaxCurrency: + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + type: string + TreasureTitlesFinancialTransactionTaxFinancialTransactionTaxAmount: + description: Valor relacionado ao objeto + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesGrossAmount: + description: | + Valor do investimento anterior à dedução de impostos, taxas e + tarifas (se houver), atualizado (a mercado) na data de referência. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesGrossAmountAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesGrossAmountAmount: + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesIdentifyProduct: + type: object + required: + - isinCode + - productName + - remuneration + - dueDate + - purchaseDate + - voucherPaymentIndicator + properties: + isinCode: + $ref: '#/components/schemas/TreasureTitlesIsinCode' + productName: + $ref: '#/components/schemas/TreasureTitlesProductName' + remuneration: + $ref: '#/components/schemas/TreasureTitlesRemuneration' + dueDate: + $ref: '#/components/schemas/TreasureTitlesDueDate' + purchaseDate: + $ref: '#/components/schemas/TreasureTitlesPurchaseDate' + voucherPaymentIndicator: + $ref: '#/components/schemas/TreasureTitlesVoucherPaymentIndicator' + voucherPaymentPeriodicity: + $ref: '#/components/schemas/TreasureTitlesVoucherPaymentPeriodicity' + voucherPaymentPeriodicityAdditionalInfo: + $ref: '#/components/schemas/TreasureTitlesVoucherPaymentPeriodicityAdditionalInfo' + TreasureTitlesIncomeTax: + description: | + Valor do imposto de renda provisionado considerando a alíquota vigente na data de referência. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesIncomeTaxAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesIncomeTaxAmount: + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesIncomeTaxCurrency: + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + type: string + TreasureTitlesIncomeTaxIncomeTaxAmount: + description: Valor relacionado ao objeto + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesIndexer: + description: 'Índice utilizado como referência para a correção da rentabilidade e/ou rendimentos do ativo (CDI, DI , TR, IPCA, IGP_M, IGP_DI, INPC, BCP, TLC, SELIC, PRE_FIXADO e OUTROS)' + example: CDI + enum: + - CDI + - DI + - TR + - IPCA + - IGP_M + - IGP_DI + - INPC + - BCP + - TLC + - SELIC + - PRE_FIXADO + - OUTROS + type: string + TreasureTitlesIndexerAdditionalInfo: + description: | + Informações adicionais do indexador. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido com o valor 'OUTROS'. + maxLength: 50 + pattern: '[\w\W\s]*' + example: Dólar + type: string + TreasureTitlesInvestmentId: + description: | + Identifica de forma única o relacionamento do cliente com o + produto, mantendo as regras de imutabilidade dentro da instituição + transmissora. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + type: string + TreasureTitlesIsinCode: + description: | + Código ISIN da emissão, Código ISIN do produto, Código da emissora + : código universal que identifica cada valor mobiliário ou instrumento + financeiro, conforme Norma ISO 6166. + maxLength: 12 + pattern: '^[A-Z]{2}([A-Z0-9]){9}\d{1}$' + example: BRCST4CTF001 + type: string + TreasureTitlesMetaTransaction: + type: object + description: Meta informações referente a API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + TreasureTitlesNetAmount: + description: 'Valor do investimento posterior a dedução de impostos, taxas e tarifas (se houver), atualizado (a mercado) na data de referência.' + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesNetAmountAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesNetAmountAmount: + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesPostFixedIndexerPercentage: + description: | + Percentual do indexador da aquisição do contrato. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido de forma diferente de ‘PRE FIXADO’. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '1.100000' + type: string + format: double + TreasureTitlesPreFixedRate: + description: | + Valor da taxa da aquisição do contrato. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido com o valor ‘PRE FIXADO’. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '0.300000' + type: string + format: double + TreasureTitlesProductName: + description: Nome do título em questão, conforme listado no site do Tesouro Direto [https://www.tesourodireto.com.br](https://www.tesourodireto.com.br) + maxLength: 70 + pattern: '[\w\W\s]*' + example: Tesouro Selic 2025 + type: string + TreasureTitlesPurchaseDate: + description: Data de aquisição do cliente. + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + type: string + format: date + TreasureTitlesPurchaseUnitPrice: + description: Valor unitário negociado com o cliente na data de aquisição. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesQuantity: + description: Quantidade de títulos detidos na data da posição do cliente. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$ ' + format: double + type: string + example: '1000.015' + TreasureTitlesRatePeriodicity: + description: 'Periodicidade da taxa de remuneração (mensal, anual, diário e semestral)' + example: DIARIO + enum: + - MENSAL + - ANUAL + - DIARIO + - SEMESTRAL + type: string + TreasureTitlesReferenceDateTime: + description: Data da última posição consolidada disponível a que se referem os dados transacionais do cliente disponíveis nos canais eletrônicos. + maxLength: 20 + pattern: '(^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$)' + example: '2022-07-21T17:32:00Z' + type: string + format: date-time + TreasureTitlesRemuneration: + description: Objeto para detalhamento de remuneração do titulo. + type: object + required: + - indexer + - ratePeriodicity + - calculation + properties: + indexer: + $ref: '#/components/schemas/TreasureTitlesIndexer' + indexerAdditionalInfo: + $ref: '#/components/schemas/TreasureTitlesIndexerAdditionalInfo' + preFixedRate: + $ref: '#/components/schemas/TreasureTitlesPreFixedRate' + postFixedIndexerPercentage: + $ref: '#/components/schemas/TreasureTitlesPostFixedIndexerPercentage' + ratePeriodicity: + $ref: '#/components/schemas/TreasureTitlesRatePeriodicity' + calculation: + $ref: '#/components/schemas/TreasureTitlesCalculation' + TreasureTitlesRemunerationTransactionRate: + description: | + Taxa de remuneração da movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. + maxLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '0.300000' + type: string + format: double + TreasureTitlesTransactionDate: + description: Data da movimentação. + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + type: string + format: date + TreasureTitlesTransactionGrossValue: + description: | + Valor bruto da movimentação + + Nos casos em que se tratar de movimento de saída e a instituição não tiver a informação de IR recolhido na fonte, o valor bruto e o valor líquido expostos deverão ser iguais. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesTransactionGrossValueAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesTransactionGrossValueCurrency' + TreasureTitlesTransactionGrossValueAmount: + description: 'Valor bruto da transação (Preço unitário da movimentação x Quantidade) ' + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesTransactionGrossValueCurrency: + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + type: string + TreasureTitlesTransactionId: + description: Código ou identificador único prestado pela instituição para individualizar o movimento. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + type: string + TreasureTitlesTransactionNetValue: + description: | + Valor líquido da transação + + Nos casos em que se tratar de movimento de saída e a instituição não tiver a informação de IR recolhido na fonte, o valor bruto e o valor líquido expostos deverão ser iguais. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesTransactionNetValueAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesTransactionNetValueCurrency' + TreasureTitlesTransactionNetValueAmount: + description: Valor relacionado ao objeto + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesTransactionNetValueCurrency: + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + type: string + TreasureTitlesTransactionQuantity: + description: Quantidade de títulos envolvidos na movimentação. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.25' + type: string + format: double + TreasureTitlesTransactionsLinks: + $ref: '#/components/schemas/TreasureTitlesLinks' + TreasureTitlesTransactionType: + description: 'Compra, venda, cancelamento, vencimento, pagamento de juros, amortização, transferência de titularidade, transferência de custódia e outros.' + example: AMORTIZACAO + enum: + - COMPRA + - VENDA + - CANCELAMENTO + - VENCIMENTO + - PAGAMENTO_JUROS + - AMORTIZACAO + - TRANSFERENCIA_TITULARIDADE + - TRANSFERENCIA_CUSTODIA + - OUTROS + type: string + TreasureTitlesTransactionUnitPrice: + description: Preço unitário bruto negociado na transação. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesTransactionUnitPriceAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesTransactionUnitPriceCurrency' + TreasureTitlesTransactionUnitPriceAmount: + description: Valor relacionado ao objeto + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.04' + type: string + format: double + TreasureTitlesTransactionUnitPriceCurrency: + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + type: string + TreasureTitlesType: + description: | + Tipo de movimentação na visão de investimento (Nos casos de + pagamento de juros e amortização) fica convencionado que será considerado que + o tipo de movimento será saída. + example: ENTRADA + enum: + - ENTRADA + - SAIDA + type: string + TreasureTitlesUpdatedUnitPrice: + description: Valor bruto unitário atualizado (a mercado) na data de referência. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesVoucherPaymentIndicator: + description: Indicativo se há pagamento de cupom (Sim ou não). + example: SIM + enum: + - SIM + - NAO + type: string + TreasureTitlesVoucherPaymentPeriodicity: + description: | + Em caso de haver pagamento de cupom, descrever a periodicidade + (mensal, trimestral, semestral, anual, irregular e outros) + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'voucherPaymentIndicator' for preenchido com o valor 'SIM'. + example: MENSAL + enum: + - MENSAL + - TRIMESTRAL + - SEMESTRAL + - ANUAL + - IRREGULAR + - OUTROS + type: string + TreasureTitlesVoucherPaymentPeriodicityAdditionalInfo: + description: | + Informações adicionais da periodicidade de pagamento de cupom. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'voucherPaymentPeriodicity' for preenchido com o valor 'OUTROS'. + maxLength: 50 + pattern: '[\w\W\s]*' + example: Diária + type: string + securitySchemes: + OAuth2AuthorizationCode: + type: oauth2 + description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados. + flows: + authorizationCode: + authorizationUrl: 'https://authserver.example/authorization' + tokenUrl: 'https://authserver.example/token' + scopes: + treasure-titles: Escopo necessário para acesso à API Treasure Titles - Open Finance Brasil. O controle dos endpoints específicos é feito via permissions. + parameters: + InvestmentId: + name: investmentId + in: path + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + example: '92792126019929200000000000000000000000000' + Authorization: + name: Authorization + in: header + description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado + required: true + schema: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + pagination-key: + name: pagination-key + in: query + description: 'Identificador de rechamada, utilizado para evitar a contagem de chamadas ao endpoint durante a paginação.' + schema: + type: string + maxLength: 2048 + pattern: '[\w\W\s]*' + page: + name: page + in: query + description: Número da página que está sendo requisitada (o valor da primeira página é 1). + schema: + type: integer + default: 1 + minimum: 1 + maximum: 2147483647 + format: int32 + pageSize: + name: page-size + in: query + description: Quantidade total de registros por páginas. A transmissora deve considerar entrada como 25, caso seja informado algum valor menor pela receptora. Enquanto houver mais que 25 registros a enviar, a transmissora deve considerar o mínimo por página como 25. Somente a última página retornada (ou primeira, no caso de página única) pode conter menos de 25 registros. Mais informações, acesse Especificações de APIs > Padrões > Paginação. + schema: + type: integer + default: 25 + minimum: 25 + format: int32 + maximum: 1000 + xCustomerUserAgent: + name: x-customer-user-agent + in: header + description: Indica o user-agent que o usuário utiliza. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiAuthDate: + name: x-fapi-auth-date + in: header + description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a [RFC7231](https://tools.ietf.org/html/rfc7231).Exemplo: Sun, 10 Sep 2017 19:43:31 UTC' + required: false + schema: + type: string + pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$' + minLength: 29 + maxLength: 29 + xFapiCustomerIpAddress: + name: x-fapi-customer-ip-address + in: header + description: O endereço IP do usuário se estiver atualmente logado com o receptor. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiInteractionId: + name: x-fapi-interaction-id + in: header + description: Um UUID RFC4122 usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela receptora (client) e o seu valor deve ser "espelhado" pela transmissora (server) no cabeçalho de resposta. + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + fromTransactionDate: + name: fromTransactionDate + description: | + Data inicial de filtragem. + + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + fromTransactionDateMaxLimited: + name: fromTransactionDate + description: | + Data inicial de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + toTransactionDate: + name: toTransactionDate + description: | + Data final de filtragem. + + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + toTransactionDateMaxLimited: + name: toTransactionDate + description: | + Data final de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + responses: + OkResponseTreasureTitlesBalances: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseTreasureTitlesBalances' + OkResponseTreasureTitlesProductList: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseTreasureTitlesListProduct' + ResponseTreasureTitlesIdentifyProduct: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseTreasureTitlesIdentifyProduct' + ResponseTreasureTitlesProductTransactions: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseTreasureTitlesProductTransactions' + ResponseTreasureTitlesProductTransactionsCurrent: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseTreasureTitlesProductTransactions' + BadRequest: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + Forbidden: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + GatewayTimeout: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + InternalServerError: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + Locked: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + MethodNotAllowed: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotAcceptable: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotFound: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + TooManyRequests: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + Unauthorized: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + UnprocessableEntity: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + Default: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + SiteIsOverloaded: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + BadRequestWithAdditionalProperties: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + ForbiddenWithAdditionalProperties: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + GatewayTimeoutWithAdditionalProperties: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + InternalServerErrorWithAdditionalProperties: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + LockedWithAdditionalProperties: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + MethodNotAllowedWithAdditionalProperties: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + NotAcceptableWithAdditionalProperties: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + NotFoundWithAdditionalProperties: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + TooManyRequestsWithAdditionalProperties: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + UnauthorizedWithAdditionalProperties: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + UnprocessableEntityWithAdditionalProperties: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + DefaultWithAdditionalProperties: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + SiteIsOverloadedWithAdditionalProperties: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' diff --git a/swagger-apis/treasure-titles/1.0.0.yml b/swagger-apis/treasure-titles/1.0.0.yml new file mode 100644 index 000000000..afe72c307 --- /dev/null +++ b/swagger-apis/treasure-titles/1.0.0.yml @@ -0,0 +1,1498 @@ +openapi: 3.0.0 +info: + title: API Treasure Titles - Open Finance Brasil + description: | + API de informações de operações de Títulos do Tesouro Direto Open Finance Brasil – Fase 4. API que retorna informações de operações de investimento do tipo Títulos do Tesouro Direto mantidas nas instituições transmissoras por seus clientes, incluindo dados como informações do produto, quantidade, saldos em posição do cliente e movimentações financeiras. Não possui segregação entre pessoa natural e pessoa jurídica. Requer consentimento do cliente para todos os endpoints. Devem ser considerados como escopo de exposição todos os títulos ofertados pelo Tesouro Direto. A exposição se dará por cada operação de títulos do Tesouro Direto contratada pelo cliente. + version: 1.0.0 + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' + contact: + name: Governança do Open Finance Brasil – Especificações + email: gt-interfaces@openbankingbr.org + url: 'https://openbanking-brasil.github.io/areadesenvolvedor/' +servers: + - url: 'https://api.banco.com.br/open-banking/treasure-titles/v1' + description: Servidor de Produção + - url: 'https://apih.banco.com.br/open-banking/treasure-titles/v1' + description: Servidor de Homologação +tags: + - name: Product List + description: Obtém a lista de operações de Títulos do Tesouro Direto mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + - name: Product Identification + description: Obtém os dados da operação de Títulos do Tesouro Direto identificada por investmentId. + - name: Balances + description: Obtém a posição da operação de Títulos do Tesouro Direto identificada por investmentId. + - name: Transactions + description: Obtém as movimentações da operação (últimos 12 meses) de Títulos do Tesouro Direto identificada por investmentId. + - name: Transactions Current + description: 'Obtém as movimentações recentes da operação de Títulos do Tesouro Direto identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' +paths: + /investments: + get: + tags: + - Product List + summary: Obtém a lista de operações de Títulos do Tesouro Direto mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + operationId: treasureTitlesGetInvestments + description: Obtém a lista de operações de Títulos do Tesouro Direto mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + parameters: + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + responses: + '200': + $ref: '#/components/responses/OkResponseTreasureTitlesProductList' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - treasure-titles + '/investments/{investmentId}': + get: + tags: + - Product Identification + summary: Obtém os dados da operação de Títulos do Tesouro Direto identificada por investmentId. + operationId: treasureTitlesGetInvestmentsInvestmentId + description: Obtém os dados da operação de Títulos do Tesouro Direto identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseTreasureTitlesIdentifyProduct' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - treasure-titles + '/investments/{investmentId}/balances': + get: + tags: + - Balances + summary: Obtém a posição da operação de Títulos do Tesouro Direto identificada por investmentId. + operationId: treasureTitlesGetInvestmentsInvestmentIdBalances + description: | + Obtém a posição da operação de Títulos do Tesouro Direto identificada por investmentId. + + Nos casos em que não houver posição para o investimento, ou seja, quantidade de ativos e valores monetários zerados, mas o mesmo ainda estiver no prazo de exposição (até 12 meses após a última movimentação), deve se retornar status code 200 e para o payload de retorno considerar os valores abaixo. Campos não obrigatórios não devem ser retornados: + + - Valores monetários: 0.00 + - Quantidade de ativos: 0.00 + - Data e hora da última posição: mesmo conteúdo do campo requestDateTime + parameters: + - name: investmentId + in: path + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/OkResponseTreasureTitlesBalances' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - treasure-titles + '/investments/{investmentId}/transactions': + get: + tags: + - Transactions + summary: Obtém as movimentações da operação (últimos 12 meses) de Títulos do Tesouro Direto identificada por investmentId. + operationId: treasureTitlesGetInvestmentsInvestmentIdTransactions + description: Obtém as movimentações da operação (últimos 12 meses) de Títulos do Tesouro Direto identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDate' + - $ref: '#/components/parameters/toTransactionDate' + responses: + '200': + $ref: '#/components/responses/ResponseTreasureTitlesProductTransactions' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - treasure-titles + '/investments/{investmentId}/transactions-current': + get: + tags: + - Transactions Current + summary: 'Obtém as movimentações recentes da operação de Títulos do Tesouro Direto identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + operationId: treasureTitlesGetInvestmentsInvestmentIdTransactionsCurrent + description: 'Obtém as movimentações recentes da operação de Títulos do Tesouro Direto identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDateMaxLimited' + - $ref: '#/components/parameters/toTransactionDateMaxLimited' + responses: + '200': + $ref: '#/components/responses/ResponseTreasureTitlesProductTransactionsCurrent' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - treasure-titles +components: + schemas: + LockedWithAdditionalProperties: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + additionalProperties: false + meta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + additionalProperties: false + ResponseError: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + ResponseTreasureTitlesListProduct: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseTreasureTitlesListProductData' + links: + $ref: '#/components/schemas/TreasureTitlesProductListLinks' + meta: + $ref: '#/components/schemas/TreasureTitlesMeta' + additionalProperties: false + TreasureTitlesMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + TreasureTitlesLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + TreasureTitlesProductListLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + last: + type: string + format: uri + maxLength: 2000 + description: URI da última página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%.\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%\+.~#?&\/\/=]*)$' + ResponseTreasureTitlesBalances: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/TreasureTitlesBalances' + links: + $ref: '#/components/schemas/TreasureTitlesLinks' + meta: + $ref: '#/components/schemas/TreasureTitlesMeta' + additionalProperties: false + TreasureTitlesProductTransaction: + type: object + required: + - type + - transactionType + - transactionDate + - transactionUnitPrice + - transactionQuantity + - transactionGrossValue + - transactionNetValue + - transactionId + properties: + type: + $ref: '#/components/schemas/TreasureTitlesType' + transactionType: + $ref: '#/components/schemas/TreasureTitlesTransactionType' + transactionTypeAdditionalInfo: + description: | + Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não de limitadas no domínio. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com o valor 'OUTROS'. + maxLength: 100 + pattern: '[\w\W\s]*' + example: '' + type: string + transactionDate: + $ref: '#/components/schemas/TreasureTitlesTransactionDate' + transactionUnitPrice: + $ref: '#/components/schemas/TreasureTitlesTransactionUnitPrice' + transactionQuantity: + $ref: '#/components/schemas/TreasureTitlesTransactionQuantity' + transactionGrossValue: + $ref: '#/components/schemas/TreasureTitlesTransactionGrossValue' + incomeTax: + description: | + Valor do imposto de renda recolhido na transação + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesIncomeTaxAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + financialTransactionTax: + description: | + Valor do IOF recolhido na transação + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'SAIDA'. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesFinancialTransactionTaxAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + transactionNetValue: + $ref: '#/components/schemas/TreasureTitlesTransactionNetValue' + remunerationTransactionRate: + $ref: '#/components/schemas/TreasureTitlesRemunerationTransactionRate' + transactionId: + $ref: '#/components/schemas/TreasureTitlesTransactionId' + ResponseTreasureTitlesIdentifyProduct: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/TreasureTitlesIdentifyProduct' + links: + $ref: '#/components/schemas/TreasureTitlesLinks' + meta: + $ref: '#/components/schemas/TreasureTitlesMeta' + additionalProperties: false + ResponseTreasureTitlesListProductData: + type: object + description: Lista de títulos de tesouro direto mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento + required: + - brandName + - companyCnpj + - investmentId + properties: + brandName: + $ref: '#/components/schemas/TreasureTitlesBrandName' + companyCnpj: + $ref: '#/components/schemas/TreasureTitlesCompanyCnpj' + investmentId: + $ref: '#/components/schemas/TreasureTitlesInvestmentId' + additionalProperties: false + ResponseTreasureTitlesProductTransactions: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/TreasureTitlesProductTransaction' + links: + $ref: '#/components/schemas/TreasureTitlesLinks' + meta: + $ref: '#/components/schemas/TreasureTitlesMetaTransaction' + additionalProperties: false + TreasureTitlesAmount: + description: Valor relacionado ao objeto. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.000004' + type: string + format: double + TreasureTitlesBalances: + type: object + required: + - referenceDateTime + - updatedUnitPrice + - grossAmount + - netAmount + - incomeTax + - blockedBalance + - purchaseUnitPrice + - quantity + properties: + referenceDateTime: + $ref: '#/components/schemas/TreasureTitlesReferenceDateTime' + updatedUnitPrice: + $ref: '#/components/schemas/TreasureTitlesUpdatedUnitPrice' + grossAmount: + $ref: '#/components/schemas/TreasureTitlesGrossAmount' + netAmount: + $ref: '#/components/schemas/TreasureTitlesNetAmount' + incomeTax: + $ref: '#/components/schemas/TreasureTitlesIncomeTax' + financialTransactionTax: + $ref: '#/components/schemas/TreasureTitlesFinancialTransactionTax' + blockedBalance: + $ref: '#/components/schemas/TreasureTitlesBlockedBalance' + purchaseUnitPrice: + $ref: '#/components/schemas/TreasureTitlesPurchaseUnitPrice' + quantity: + $ref: '#/components/schemas/TreasureTitlesQuantity' + TreasureTitlesBlockedBalance: + description: Valor não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros). Prazo de carência não é considerado como bloqueio. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesBlockedBalanceAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesBlockedBalanceAmount: + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesBrandName: + description: | + Nome da Marca reportada pelo participante no Open Finance. + Recomenda-se utilizar, sempre que possível, o mesmo nome de marca atribuído no + campo do diretório Customer Friendly Server Name (Authorisation Server). + maxLength: 80 + pattern: '[\w\W\s]*' + example: Organização A + type: string + TreasureTitlesCalculation: + description: Base de cálculo (dias úteis ou dias corridos) + example: DIAS_CORRIDOS + enum: + - DIAS_UTEIS + - DIAS_CORRIDOS + type: string + TreasureTitlesCompanyCnpj: + description: | + Número completo do CNPJ da instituição responsável pelo Cadastro - + o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. + Deve-se ter apenas os números do CNPJ, sem máscara + maxLength: 14 + pattern: '^\d{14}$' + example: '21128159000166' + type: string + TreasureTitlesCurrency: + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + type: string + TreasureTitlesDueDate: + description: Data de vencimento do título. + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + type: string + format: date + TreasureTitlesFinancialTransactionTax: + description: | + IOF provisionado. + + Caso seja um produto com alíquota zero esse objeto pode ser enviado sem valores (vazio). + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesFinancialTransactionTaxAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesFinancialTransactionTaxAmount: + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesGrossAmount: + description: | + Valor do investimento anterior à dedução de impostos, taxas e + tarifas (se houver), atualizado (a mercado) na data de referência. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesGrossAmountAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesGrossAmountAmount: + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesIdentifyProduct: + type: object + required: + - isinCode + - productName + - remuneration + - dueDate + - purchaseDate + - voucherPaymentIndicator + properties: + isinCode: + $ref: '#/components/schemas/TreasureTitlesIsinCode' + productName: + $ref: '#/components/schemas/TreasureTitlesProductName' + remuneration: + $ref: '#/components/schemas/TreasureTitlesRemuneration' + dueDate: + $ref: '#/components/schemas/TreasureTitlesDueDate' + purchaseDate: + $ref: '#/components/schemas/TreasureTitlesPurchaseDate' + voucherPaymentIndicator: + $ref: '#/components/schemas/TreasureTitlesVoucherPaymentIndicator' + voucherPaymentPeriodicity: + $ref: '#/components/schemas/TreasureTitlesVoucherPaymentPeriodicity' + voucherPaymentPeriodicityAdditionalInfo: + $ref: '#/components/schemas/TreasureTitlesVoucherPaymentPeriodicityAdditionalInfo' + TreasureTitlesIncomeTax: + description: | + Valor do imposto de renda provisionado considerando a alíquota vigente na data de referência. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesIncomeTaxAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesIncomeTaxAmount: + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesIndexer: + description: 'Índice utilizado como referência para a correção da rentabilidade e/ou rendimentos do ativo (CDI, DI , TR, IPCA, IGP_M, IGP_DI, INPC, BCP, TLC, SELIC, PRE_FIXADO e OUTROS)' + example: CDI + enum: + - CDI + - DI + - TR + - IPCA + - IGP_M + - IGP_DI + - INPC + - BCP + - TLC + - SELIC + - PRE_FIXADO + - OUTROS + type: string + TreasureTitlesIndexerAdditionalInfo: + description: | + Informações adicionais do indexador. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido com o valor 'OUTROS'. + maxLength: 50 + pattern: '[\w\W\s]*' + example: Dólar + type: string + TreasureTitlesInvestmentId: + description: | + Identifica de forma única o relacionamento do cliente com o + produto, mantendo as regras de imutabilidade dentro da instituição + transmissora. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + type: string + TreasureTitlesIsinCode: + description: | + Código ISIN da emissão, Código ISIN do produto, Código da emissora + : código universal que identifica cada valor mobiliário ou instrumento + financeiro, conforme Norma ISO 6166. + maxLength: 12 + pattern: '^[A-Z]{2}([A-Z0-9]){9}\d{1}$' + example: BRCST4CTF001 + type: string + TreasureTitlesMetaTransaction: + type: object + description: Meta informações referente a API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + TreasureTitlesNetAmount: + description: 'Valor do investimento posterior a dedução de impostos, taxas e tarifas (se houver), atualizado (a mercado) na data de referência.' + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesNetAmountAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesNetAmountAmount: + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesPostFixedIndexerPercentage: + description: | + Percentual do indexador da aquisição do contrato. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido de forma diferente de ‘PRE FIXADO’. + maxLength: 8 + minLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '1.100000' + type: string + format: double + TreasureTitlesPreFixedRate: + description: | + Valor da taxa da aquisição do contrato. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'indexer' for preenchido com o valor ‘PRE FIXADO’. + maxLength: 8 + minLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '0.300000' + type: string + format: double + TreasureTitlesProductName: + description: Nome do título em questão, conforme listado no site do Tesouro Direto [https://www.tesourodireto.com.br](https://www.tesourodireto.com.br) + maxLength: 70 + pattern: '[\w\W\s]*' + example: Tesouro Selic 2025 + type: string + TreasureTitlesPurchaseDate: + description: Data de aquisição do cliente. + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + type: string + format: date + TreasureTitlesPurchaseUnitPrice: + description: Valor unitário negociado com o cliente na data de aquisição. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesQuantity: + description: Quantidade de títulos detidos na data da posição do cliente. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$ ' + format: double + type: string + example: '1000.015' + TreasureTitlesRatePeriodicity: + description: 'Periodicidade da taxa de remuneração (mensal, anual, diário e semestral)' + example: DIARIO + enum: + - MENSAL + - ANUAL + - DIARIO + - SEMESTRAL + type: string + TreasureTitlesReferenceDateTime: + description: Data da última posição consolidada disponível a que se referem os dados transacionais do cliente disponíveis nos canais eletrônicos. + maxLength: 20 + pattern: '(^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$)' + example: '2022-07-21T17:32:00Z' + type: string + format: date-time + TreasureTitlesRemuneration: + description: Objeto para detalhamento de remuneração do titulo. + type: object + required: + - indexer + - ratePeriodicity + - calculation + properties: + indexer: + $ref: '#/components/schemas/TreasureTitlesIndexer' + indexerAdditionalInfo: + $ref: '#/components/schemas/TreasureTitlesIndexerAdditionalInfo' + preFixedRate: + $ref: '#/components/schemas/TreasureTitlesPreFixedRate' + postFixedIndexerPercentage: + $ref: '#/components/schemas/TreasureTitlesPostFixedIndexerPercentage' + ratePeriodicity: + $ref: '#/components/schemas/TreasureTitlesRatePeriodicity' + calculation: + $ref: '#/components/schemas/TreasureTitlesCalculation' + TreasureTitlesRemunerationTransactionRate: + description: | + Taxa de remuneração da movimentação. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'type' for preenchido com o valor 'ENTRADA'. + maxLength: 8 + minLength: 8 + pattern: '^\d{1}\.\d{6}$' + example: '0.300000' + type: string + format: double + TreasureTitlesTransactionDate: + description: Data da movimentação. + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + type: string + format: date + TreasureTitlesTransactionGrossValue: + description: | + Valor bruto da movimentação + + Nos casos em que se tratar de movimento de saída e a instituição não tiver a informação de IR recolhido na fonte, o valor bruto e o valor líquido expostos deverão ser iguais. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesTransactionGrossValueAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesTransactionGrossValueCurrency' + TreasureTitlesTransactionGrossValueAmount: + description: 'Valor bruto da transação (Preço unitário da movimentação x Quantidade) ' + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesTransactionGrossValueCurrency: + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + type: string + TreasureTitlesTransactionId: + description: Código ou identificador único prestado pela instituição para individualizar o movimento. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + type: string + TreasureTitlesTransactionNetValue: + description: | + Valor líquido da transação + + Nos casos em que se tratar de movimento de saída e a instituição não tiver a informação de IR recolhido na fonte, o valor bruto e o valor líquido expostos deverão ser iguais. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesTransactionNetValueAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesTransactionNetValueCurrency' + TreasureTitlesTransactionNetValueAmount: + description: Valor relacionado ao objeto + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + type: string + format: double + TreasureTitlesTransactionNetValueCurrency: + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + type: string + TreasureTitlesTransactionQuantity: + description: Quantidade de títulos envolvidos na movimentação. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.25' + type: string + format: double + TreasureTitlesTransactionType: + description: 'Compra, venda, cancelamento, vencimento, pagamento de juros, amortização, transferência de titularidade, transferência de custódia e outros.' + example: AMORTIZACAO + enum: + - COMPRA + - VENDA + - CANCELAMENTO + - VENCIMENTO + - PAGAMENTO_JUROS + - AMORTIZACAO + - TRANSFERENCIA_TITULARIDADE + - TRANSFERENCIA_CUSTODIA + - OUTROS + type: string + TreasureTitlesTransactionUnitPrice: + description: Preço unitário bruto negociado na transação. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesTransactionUnitPriceAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesTransactionUnitPriceCurrency' + TreasureTitlesTransactionUnitPriceAmount: + description: Valor relacionado ao objeto + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '1000.04' + type: string + format: double + TreasureTitlesTransactionUnitPriceCurrency: + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217' + maxLength: 3 + pattern: '^[A-Z]{3}$' + example: BRL + type: string + TreasureTitlesType: + description: | + Tipo de movimentação na visão de investimento (Nos casos de + pagamento de juros e amortização) fica convencionado que será considerado que + o tipo de movimento será saída. + example: ENTRADA + enum: + - ENTRADA + - SAIDA + type: string + TreasureTitlesUpdatedUnitPrice: + description: Valor bruto unitário atualizado (a mercado) na data de referência. + type: object + required: + - amount + - currency + properties: + amount: + $ref: '#/components/schemas/TreasureTitlesAmount' + currency: + $ref: '#/components/schemas/TreasureTitlesCurrency' + TreasureTitlesVoucherPaymentIndicator: + description: Indicativo se há pagamento de cupom (Sim ou não). + example: SIM + enum: + - SIM + - NAO + type: string + TreasureTitlesVoucherPaymentPeriodicity: + description: | + Em caso de haver pagamento de cupom, descrever a periodicidade + (mensal, trimestral, semestral, anual, irregular e outros) + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'voucherPaymentIndicator' for preenchido com o valor 'SIM'. + example: MENSAL + enum: + - MENSAL + - TRIMESTRAL + - SEMESTRAL + - ANUAL + - IRREGULAR + - OUTROS + type: string + TreasureTitlesVoucherPaymentPeriodicityAdditionalInfo: + description: | + Informações adicionais da periodicidade de pagamento de cupom. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'voucherPaymentPeriodicity' for preenchido com o valor 'OUTROS'. + maxLength: 50 + pattern: '[\w\W\s]*' + example: Diária + type: string + securitySchemes: + OAuth2AuthorizationCode: + type: oauth2 + description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados. + flows: + authorizationCode: + authorizationUrl: 'https://authserver.example/authorization' + tokenUrl: 'https://authserver.example/token' + scopes: + treasure-titles: Escopo necessário para acesso à API Treasure Titles - Open Finance Brasil. O controle dos endpoints específicos é feito via permissions. + parameters: + InvestmentId: + name: investmentId + in: path + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + example: '92792126019929200000000000000000000000000' + Authorization: + name: Authorization + in: header + description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado + required: true + schema: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + pagination-key: + name: pagination-key + in: query + description: 'Identificador de rechamada, utilizado para evitar a contagem de chamadas ao endpoint durante a paginação.' + schema: + type: string + maxLength: 2048 + pattern: '[\w\W\s]*' + page: + name: page + in: query + description: Número da página que está sendo requisitada (o valor da primeira página é 1). + schema: + type: integer + default: 1 + minimum: 1 + maximum: 2147483647 + format: int32 + pageSize: + name: page-size + in: query + description: Quantidade total de registros por páginas. A transmissora deve considerar entrada como 25, caso seja informado algum valor menor pela receptora. Enquanto houver mais que 25 registros a enviar, a transmissora deve considerar o mínimo por página como 25. Somente a última página retornada (ou primeira, no caso de página única) pode conter menos de 25 registros. Mais informações, acesse Especificações de APIs > Padrões > Paginação. + schema: + type: integer + default: 25 + minimum: 25 + format: int32 + maximum: 1000 + xCustomerUserAgent: + name: x-customer-user-agent + in: header + description: Indica o user-agent que o usuário utiliza. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiAuthDate: + name: x-fapi-auth-date + in: header + description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a [RFC7231](https://tools.ietf.org/html/rfc7231).Exemplo: Sun, 10 Sep 2017 19:43:31 UTC' + required: false + schema: + type: string + pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$' + minLength: 29 + maxLength: 29 + xFapiCustomerIpAddress: + name: x-fapi-customer-ip-address + in: header + description: O endereço IP do usuário se estiver atualmente logado com o receptor. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiInteractionId: + name: x-fapi-interaction-id + in: header + description: Um UUID RFC4122 usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela receptora (client) e o seu valor deve ser "espelhado" pela transmissora (server) no cabeçalho de resposta. + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + fromTransactionDate: + name: fromTransactionDate + description: | + Data inicial de filtragem. + + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + fromTransactionDateMaxLimited: + name: fromTransactionDate + description: | + Data inicial de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + toTransactionDate: + name: toTransactionDate + description: | + Data final de filtragem. + + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + toTransactionDateMaxLimited: + name: toTransactionDate + description: | + Data final de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + maxLength: 10 + format: date + example: '2021-05-21' + responses: + OkResponseTreasureTitlesBalances: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseTreasureTitlesBalances' + OkResponseTreasureTitlesProductList: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseTreasureTitlesListProduct' + ResponseTreasureTitlesIdentifyProduct: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseTreasureTitlesIdentifyProduct' + ResponseTreasureTitlesProductTransactions: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseTreasureTitlesProductTransactions' + ResponseTreasureTitlesProductTransactionsCurrent: + description: Dados obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseTreasureTitlesProductTransactions' + BadRequest: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + Forbidden: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + GatewayTimeout: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + InternalServerError: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + Locked: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + MethodNotAllowed: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotAcceptable: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + NotFound: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + TooManyRequests: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + Unauthorized: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + UnprocessableEntity: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + Default: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + SiteIsOverloaded: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + BadRequestWithAdditionalProperties: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + ForbiddenWithAdditionalProperties: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + GatewayTimeoutWithAdditionalProperties: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + InternalServerErrorWithAdditionalProperties: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + LockedWithAdditionalProperties: + description: Locked + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + MethodNotAllowedWithAdditionalProperties: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + NotAcceptableWithAdditionalProperties: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + NotFoundWithAdditionalProperties: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + TooManyRequestsWithAdditionalProperties: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + UnauthorizedWithAdditionalProperties: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + UnprocessableEntityWithAdditionalProperties: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + DefaultWithAdditionalProperties: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' + SiteIsOverloadedWithAdditionalProperties: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/LockedWithAdditionalProperties' diff --git a/swagger-apis/treasure-titles/index.html b/swagger-apis/treasure-titles/index.html index 00bbf6e2f..e5a2fecea 100644 --- a/swagger-apis/treasure-titles/index.html +++ b/swagger-apis/treasure-titles/index.html @@ -45,8 +45,11 @@ window.onload = function() { // Begin Swagger UI call region const ui = SwaggerUIBundle({ - urls: [ {"name": "1.0.0-rc1.0", "url": "./1.0.0-rc1.0.yml"}], - "urls.primaryName": "1.0.0-rc1.0", // default spec + urls: [ {"name": "1.0.0-rc1.0", "url": "./1.0.0-rc1.0.yml"}, + {"name": "1.0.0-rc2.0", "url": "./1.0.0-rc2.0.yml"}, + {"name": "1.0.0-rc3.0", "url": "./1.0.0-rc3.0.yml"}, + {"name": "1.0.0", "url": "./1.0.0.yml"}], + "urls.primaryName": "1.0.0", // default spec dom_id: '#swagger-ui', deepLinking: true, supportedSubmitMethods:[], diff --git a/swagger-apis/variable-incomes/1.0.0-rc2.0.yml b/swagger-apis/variable-incomes/1.0.0-rc2.0.yml new file mode 100644 index 000000000..4a5204abb --- /dev/null +++ b/swagger-apis/variable-incomes/1.0.0-rc2.0.yml @@ -0,0 +1,1678 @@ +openapi: 3.0.0 +info: + title: API Variable Incomes - Open Finance Brasil + description: | + API de informações de operações de Renda Variável Open Finance Brasil – Fase 4. + API que retorna informações de operações de investimento do tipo Renda Variável mantidas nas instituições transmissoras por seus clientes, incluindo dados como informações do produto, quantidade, saldos em posição do cliente, movimentações financeiras e detalhes da nota de negociação. + Não possui segregação entre pessoa natural e pessoa jurídica. Requer consentimento do cliente para todos os endpoints. + A granularidade de exposição de operações de renda variável se dá por cada ativo (ticker) da carteira do cliente. + Ações escriturais não fazem parte do escopo do Open Finance Brasil. + Operações de day trade devem ser incluídas nos endpoints. + Segue abaixo tabela com o escopo de produtos a ser considerado para compartilhamento: + ``` + |----------------------|-------------------------------|----------------------|-----------------------------------| + | CLASSE DE ATIVOS | PRODUTO | SUBPRODUTO | DENOMINAÇÃO | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Fundos de Investimentos | - | FIAGRO | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Ações | Subscrição | Bonus / Direito / Recibo | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Fundos de Investimentos | Fundo imobiliario | FII | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Ações | À vista | ON / PN / UNIT | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Fundos de índices | ETF | ETF de Renda Variável | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Fundos de índices | ETF | ETF Internacional | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Fundos de índices | ETF Renda Fixa | ETF Renda Fixa | + |----------------------|-------------------------------|----------------------|-----------------------------------| + ``` + version: 1.0.0-rc2.0 + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' + contact: + name: Governança do Open Finance Brasil – Especificações + email: gt-interfaces@openbankingbr.org + url: 'https://openbanking-brasil.github.io/areadesenvolvedor/' +servers: + - url: 'https://api.banco.com.br/open-banking/variable-incomes/v1' + description: Servidor de Produção + - url: 'https://apih.banco.com.br/open-banking/variable-incomes/v1' + description: Servidor de Homologação +tags: + - name: Product List + description: Obtém a lista de operações de Renda Variável mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + - name: Product Identification + description: Obtém os dados da operação de Renda Variável identificada por investmentId. + - name: Balances + description: Obtém a posição da operação de Renda Variável identificada por investmentId. + - name: Transactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Variável identificada por investmentId. + - name: Transactions Current + description: 'Obtém as movimentações recentes da operação de Renda Variável identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + - name: Broker Note Details + description: | + Obtém as informações da nota de negociação identificado nas movimentações de compra e venda de ativos em bolsa. + O brokerNoteId é enviado nos movimentos de compra ou venda de ativos e deve ser passada como parâmetro de entrada no endpoint “Nota de Negociação”.Como conteúdo do campo brokerNoteId é esperado que a transmissora gere um identificar único, imutável, para cada número (natural) de nota de negociação. +paths: + /investments: + get: + tags: + - Product List + summary: Obtém a lista de operações de Renda Variável mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + operationId: variableIncomesGetInvestments + description: Obtém a lista de operações de Renda Variável mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + parameters: + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + responses: + '200': + $ref: '#/components/responses/OKResponseVariableIncomesProductList' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - variable-incomes + '/investments/{investmentId}': + get: + tags: + - Product Identification + summary: Obtém os dados da operação de Renda Variável identificada por investmentId. + operationId: variableIncomesGetInvestmentsInvestmentId + description: Obtém os dados da operação de Renda Variável identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/OKResponseVariableIncomesProductIdentification' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - variable-incomes + '/investments/{investmentId}/balances': + get: + tags: + - Balances + summary: Obtém a posição da operação de Renda Variável identificada por investmentId. + operationId: variableIncomesGetInvestmentsInvestmentIdBalances + description: Obtém a posição da operação de Renda Variável identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseVariableIncomesBalances' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - variable-incomes + '/investments/{investmentId}/transactions': + get: + tags: + - Transactions + summary: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Variável identificada por investmentId. + operationId: variableIncomesGetInvestmentsInvestmentIdTransactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Variável identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDate' + - $ref: '#/components/parameters/toTransactionDate' + responses: + '200': + $ref: '#/components/responses/OKResponseVariableIncomesTransactions' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - variable-incomes + '/investments/{investmentId}/transactions-current': + get: + tags: + - Transactions Current + summary: 'Obtém as movimentações recentes da operação de Renda Variável identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + operationId: variableIncomesGetInvestmentsInvestmentIdTransactionsCurrent + description: 'Obtém as movimentações recentes da operação de Renda Variável identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDateCurrent' + - $ref: '#/components/parameters/toTransactionDateCurrent' + responses: + '200': + $ref: '#/components/responses/OKResponseVariableIncomesTransactionsCurrent' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - variable-incomes + '/investments/{investmentId}/broker-notes/{brokerNoteId}': + get: + tags: + - Broker Note Details + summary: | + Obtém as informações da nota de negociação identificado nas movimentações de compra e venda de ativos em bolsa. + O brokerNoteId é enviado nos movimentos de compra ou venda de ativos e deve ser passada como parâmetro de entrada no endpoint “Nota de Negociação”.Como conteúdo do campo brokerNoteId é esperado que a transmissora gere um identificar único, imutável, para cada número (natural) de nota de negociação. + operationId: variableIncomesGetInvestmentsInvestmentIdBrokerNotesBrokerNoteId + description: | + Obtém as informações da nota de negociação identificado nas movimentações de compra e venda de ativos em bolsa. + O brokerNoteId é enviado nos movimentos de compra ou venda de ativos e deve ser passada como parâmetro de entrada no endpoint “Nota de Negociação”.Como conteúdo do campo brokerNoteId é esperado que a transmissora gere um identificar único, imutável, para cada número (natural) de nota de negociação. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/BrokerNoteId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseVariableIncomesBroker' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - variable-incomes +components: + schemas: + ResponseVariableIncomesProductList: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseVariableIncomesProductListData' + links: + $ref: '#/components/schemas/VariableIncomesLinks' + meta: + $ref: '#/components/schemas/VariableIncomesMeta' + additionalProperties: false + ResponseVariableIncomesProductIdentification: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/ResponseVariableIncomesProductIdentificationData' + links: + $ref: '#/components/schemas/VariableIncomesLinks' + meta: + $ref: '#/components/schemas/VariableIncomesMeta' + additionalProperties: false + ResponseVariableIncomesBalances: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + items: + $ref: '#/components/schemas/ResponseVariableIncomesBalanceData' + links: + $ref: '#/components/schemas/VariableIncomesBalancesLinks' + meta: + $ref: '#/components/schemas/VariableIncomesBalancesMeta' + additionalProperties: false + ResponseVariableIncomesTransactions: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseVariableIncomesTransactionsData' + links: + $ref: '#/components/schemas/VariableIncomesLinks' + meta: + $ref: '#/components/schemas/MetaSingle' + additionalProperties: false + ResponseVariableIncomesTransactionsCurrent: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseVariableIncomesTransactionsCurrentData' + links: + $ref: '#/components/schemas/VariableIncomesLinks' + meta: + $ref: '#/components/schemas/MetaSingle' + additionalProperties: false + ResponseVariableIncomesProductListData: + type: object + description: Lista de ativos de renda variável mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + required: + - brandName + - companyCnpj + - investmentId + properties: + brandName: + type: string + description: 'Nome da Marca reportada pelo participante no Open Finance. Recomenda-se utilizar, sempre que possível, o mesmo nome de marca atribuído no campo do diretório Customer Friendly Server Name (Authorisation Server).' + pattern: '[\w\W\s]*' + example: Organização A + maxLength: 80 + companyCnpj: + type: string + description: 'Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. Deve-se ter apenas os números do CNPJ, sem máscara.' + maxLength: 14 + pattern: '^\d{14}$' + example: '21281590001660' + investmentId: + type: string + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + additionalProperties: false + ResponseVariableIncomesProductIdentificationData: + type: object + required: + - issuerInstitutionCnpjNumber + - isinCode + - ticker + properties: + issuerInstitutionCnpjNumber: + type: string + description: CNPJ da instituição emissora. + maxLength: 14 + pattern: '^\d{14}$' + example: '11225860000140' + isinCode: + type: string + description: | + Código ISIN da emissão, Código ISIN do produto, Código da emissora: código universal que identifica cada valor mobiliário ou instrumento financeiro, conforme Norma ISO 6166. + maxLength: 12 + pattern: '^[A-Z]{2}([A-Z0-9]){9}\d{1}$' + example: BRCST4CTF001 + ticker: + type: string + description: Código de negociação para identificação de ativos negociados em bolsa. + maxLength: 35 + pattern: '[\w\W\s]*' + example: PETR4 + additionalProperties: false + ResponseVariableIncomesBalanceData: + type: object + description: Lista de títulos de renda fixa bancária mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento + required: + - referenceDate + - priceFactor + - grossAmount + - blockedBalance + - quantity + - closingPrice + properties: + referenceDate: + type: string + format: date + description: Posição fechada para o ativo da data do dia anterior. + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2023-01-07' + maxLength: 10 + priceFactor: + type: string + format: double + description: | + Fator que indica o número de ações utilizadas para a formação do preço. Valor informado deve ser maior que zero. + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + example: '100.0005' + grossAmount: + $ref: '#/components/schemas/VariableIncomesBalancesGrossAmount' + blockedBalance: + $ref: '#/components/schemas/VariableIncomesBalancesBlockedBalance' + quantity: + type: string + format: double + description: Quatidade total do ativo na data de referência. + pattern: '^-?\d{1,15}\.\d{2,8}$' + maxLength: 25 + example: '1000.00000004' + closingPrice: + $ref: '#/components/schemas/VariableIncomesBalancesClosingPrice' + ResponseVariableIncomesTransactionsData: + type: object + required: + - type + - transactionType + - transactionDate + - transactionValue + - transactionId + properties: + type: + $ref: '#/components/schemas/EnumVariableIncomesTransactionsType' + transactionType: + $ref: '#/components/schemas/EnumVariableIncomesTransactionsTransactionType' + transactionTypeAdditionalInfo: + type: string + description: | + Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com o valor 'OUTROS'. + maxLength: 100 + pattern: '[\w\W\s]*' + transactionDate: + type: string + format: date + description: | + Data da movimentação. + + [Restrição] Data do pregão: compartilhar movimentos até a data da posição. + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + priceFactor: + type: string + format: double + description: | + Fator que indica o número de ações utilizadas para a formação do preço. Valor informado deve ser maior que zero. + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + example: '100.0005' + transactionUnitPrice: + type: object + description: | + Preço unitário da movimentação: valor da unidade do produto na movimentação do investimento. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA' ou 'VENDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.0004' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionQuantity: + type: string + format: double + description: | + Quantidade de ativos movimentados. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA' ou 'ALUGUEIS'. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.00000025' + transactionValue: + type: object + description: Valor da operação realizada pelo cliente. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionId: + type: string + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + description: Código ou identificador único prestado pela instituição que mantém a representação individual do movimento. + brokerNoteId: + type: string + description: | + Identificador da nota de negociação. + + [Restrição] Informação de envio obrigatório caso o motivo da movimentação seja compra ou venda. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: XWYZ555019929279212650822221989319252233 + additionalProperties: false + ResponseVariableIncomesTransactionsCurrentData: + type: object + required: + - type + - transactionType + - transactionDate + - transactionValue + - transactionId + properties: + type: + $ref: '#/components/schemas/EnumVariableIncomesTransactionsCurrentType' + transactionType: + $ref: '#/components/schemas/EnumVariableIncomesTransactionsCurrentTransactionType' + transactionTypeAdditionalInfo: + type: string + description: | + Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com o valor 'OUTROS'. + maxLength: 100 + pattern: '[\w\W\s]*' + transactionDate: + type: string + format: date + description: | + Data da movimentação. + + [Restrição] Data do pregão: compartilhar movimentos até a data da posição. + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + priceFactor: + type: string + format: double + description: | + Fator que indica o número de ações utilizadas para a formação do preço. Valor informado deve ser maior que zero. + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + example: '100.0005' + transactionUnitPrice: + type: object + description: | + Preço unitário da movimentação: valor da unidade do produto na movimentação do investimento. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA' ou 'VENDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.0004' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionQuantity: + type: string + format: double + description: | + Quantidade de ativos movimentados. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA' ou 'ALUGUEIS'. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.00000025' + transactionValue: + type: object + description: Valor da operação realizada pelo cliente. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionId: + type: string + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + description: Código ou identificador único prestado pela instituição que mantém a representação individual do movimento. + brokerNoteId: + type: string + description: | + Identificador da nota de negociação. + + [Restrição] Informação de envio obrigatório caso o motivo da movimentação seja compra ou venda. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: XWYZ555019929279212650822221989319252233 + additionalProperties: false + VariableIncomesBalancesBlockedBalance: + type: object + description: 'Valor não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros).' + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + VariableIncomesBalancesClosingPrice: + type: object + description: Preço de fechamento da data de referência. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + example: '1000.0004' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + VariableIncomesBalancesGrossAmount: + type: object + description: 'Valor do investimento anterior à dedução de impostos, taxas e tarifas (se houver), atualizado na data de referência. Quantidade de ativos dividido pelo Fator de cotação e multiplicado pelo pelo preço de fechamento da data de referência.' + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + VariableIncomesBalancesLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + VariableIncomesBalancesMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + MetaSingle: + type: object + description: Meta informação referente a API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + VariableIncomesMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + VariableIncomesLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + EnumVariableIncomesTransactionsType: + type: string + description: | + Tipo de movimentação na visão de investimento: entrada ou saída. Nos casos de pagamento de dividendos, JCP e aluguéis, fica convencionado que será considerado que o tipo de movimento será saída. + enum: + - ENTRADA + - SAIDA + example: ENTRADA + EnumVariableIncomesTransactionsTransactionType: + type: string + description: | + O campo deve classificar a movimentação em um dos tipos descritos: compra, venda, dividendos, JCP, aluguéis, transferência de custódia, transferência de titularidade e outros. + O transmissor deve classificar as movimentações disponíveis associando-a a um dos itens do Enum listado neste campo. + A opção OUTROS só deve ser utilizada para os casos em que de fato a movimentação compartilhada não possa ser classificada como um dos itens deste Enum. + A expressão “aluguéis” deverá ser utilizada apenas para informar os juros/remuneração pagos/recebidos pelo cliente dos contratos de ações alugadas, seguindo o mesmo entendimento de ENTRADA/SAÍDA da expressão “dividendos”. + enum: + - COMPRA + - VENDA + - DIVIDENDOS + - JCP + - ALUGUEIS + - TRANSFERENCIA_CUSTODIA + - TRANSFERENCIA_TITULARIDADE + - OUTROS + example: DIVIDENDOS + EnumVariableIncomesTransactionsCurrentType: + type: string + description: | + Tipo de movimentação na visão de investimento: entrada ou saída. Nos casos de pagamento de dividendos, JCP e aluguéis, fica convencionado que será considerado que o tipo de movimento será saída. + enum: + - ENTRADA + - SAIDA + example: ENTRADA + EnumVariableIncomesTransactionsCurrentTransactionType: + type: string + description: | + O campo deve classificar a movimentação em um dos tipos descritos: compra, venda, dividendos, JCP, aluguéis, transferência de custódia, transferência de titularidade e outros. + O transmissor deve classificar as movimentações disponíveis associando-a a um dos itens do Enum listado neste campo. + A opção OUTROS só deve ser utilizada para os casos em que de fato a movimentação compartilhada não possa ser classificada como um dos itens deste Enum. + A expressão “aluguéis” deverá ser utilizada apenas para informar os juros/remuneração pagos/recebidos pelo cliente dos contratos de ações alugadas, seguindo o mesmo entendimento de ENTRADA/SAÍDA da expressão “dividendos”. + enum: + - COMPRA + - VENDA + - DIVIDENDOS + - JCP + - ALUGUEIS + - TRANSFERENCIA_CUSTODIA + - TRANSFERENCIA_TITULARIDADE + - OUTROS + example: DIVIDENDOS + ResponseVariableIncomesBroker: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/ResponseVariableIncomesBrokerData' + links: + $ref: '#/components/schemas/VariableIncomesLinks' + meta: + $ref: '#/components/schemas/VariableIncomesMeta' + additionalProperties: false + ResponseVariableIncomesBrokerData: + type: object + required: + - brokerNoteNumber + - grossValue + - brokerageFee + - clearingSettlementFee + - clearingRegistrationFee + - stockExchangeAssetTradeNoticeFee + - stockExchangeFee + - clearingCustodyFee + - taxes + - incomeTax + - netValue + properties: + brokerNoteNumber: + type: string + description: Identificador da nota de negociação. + maxLength: 16 + pattern: '^\d{1,16}$' + example: '1854009930314350' + grossValue: + type: object + description: o valor da nota de negociação é o somatório das operações realizadas. Total de compra e venda do dia. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '5000.0024' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + brokerageFee: + type: object + description: | + a taxa de corretagem incide sobre o valor bruto da nota de negociação, e é livremente pactuada entre o investidor e o seu intermediário. + Pode ser cobrada como um valor fixo por operação, ou um como um percentual sobre o valor negociado, ou ainda de forma mista, conforme guia CVM do investidor. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + clearingSettlementFee: + type: object + description: Valor cobrado para liquidação na custódia. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + clearingRegistrationFee: + type: object + description: Valor cobrado para registro na custódia. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + stockExchangeAssetTradeNoticeFee: + type: object + description: Valor cobrada pela bolsa pelo aviso de negociação de ativo. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + stockExchangeFee: + type: object + description: Valor cobrado pela bolsa para remunerar os serviços de registro prestados. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + clearingCustodyFee: + type: object + description: Taxa cobrada pelas IF para custódia. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + taxes: + type: object + description: 'Impostos cobrados na operação, exceto imposto de renda.' + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + incomeTax: + type: object + description: Imposto de renda retido na fonte. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + netValue: + type: object + description: Valor líquido da nota de negociação após despesas com taxa de corretagem, taxa de liquidação, taxa de registro, taxa A.N.A, emolumentos, taxa de custódia, impostos e IRRF. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '4889.0012' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + additionalProperties: false + parameters: + InvestmentId: + name: investmentId + in: path + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + example: '92792126019929200000000000000000000000000' + Authorization: + name: Authorization + in: header + description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado + required: true + schema: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + xFapiAuthDate: + name: x-fapi-auth-date + in: header + description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a RFC7231. Exemplo: Sun, 10 Sep 2017 19:43:31 UTC.' + required: false + schema: + type: string + pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$' + minLength: 29 + maxLength: 29 + xFapiCustomerIpAddress: + name: x-fapi-customer-ip-address + in: header + description: O endereço IP do usuário se estiver atualmente logado com o receptor. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiInteractionId: + name: x-fapi-interaction-id + in: header + description: Um UUID RFC4122 usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela receptora (client) e o seu valor deve ser "espelhado" pela transmissora (server) no cabeçalho de resposta. + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + xCustomerUserAgent: + name: x-customer-user-agent + in: header + description: Indica o user-agent que o usuário utiliza. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + page: + name: page + in: query + description: Número da página que está sendo requisitada (o valor da primeira página é 1). + schema: + type: integer + default: 1 + minimum: 1 + maximum: 2147483647 + format: int32 + pageSize: + name: page-size + in: query + description: Quantidade total de registros por páginas. A transmissora deve considerar entrada como 25, caso seja informado algum valor menor pela receptora. Enquanto houver mais que 25 registros a enviar, a transmissora deve considerar o mínimo por página como 25. Somente a última página retornada (ou primeira, no caso de página única) pode conter menos de 25 registros. Mais informações, acesse Especificações de APIs > Padrões > Paginação. + schema: + type: integer + default: 25 + minimum: 25 + format: int32 + maximum: 1000 + pagination-key: + name: pagination-key + in: query + description: 'Identificador de rechamada, utilizado para evitar a contagem de chamadas ao endpoint durante a paginação.' + schema: + type: string + maxLength: 2048 + pattern: '[\w\W\s]*' + fromTransactionDate: + name: fromTransactionDate + description: | + Data inicial de filtragem. + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + format: date + maxLength: 10 + example: '2022-01-01' + toTransactionDate: + name: toTransactionDate + description: | + Data final de filtragem. + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + format: date + maxLength: 10 + example: '2022-12-31' + fromTransactionDateCurrent: + name: fromTransactionDate + description: | + Data inicial de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + format: date + maxLength: 10 + example: '2023-02-01' + toTransactionDateCurrent: + name: toTransactionDate + description: | + Data final de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + format: date + maxLength: 10 + example: '2023-02-01' + BrokerNoteId: + name: brokerNoteId + in: path + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + example: '92792126019929200000000000000000000000000' + securitySchemes: + OAuth2AuthorizationCode: + type: oauth2 + description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados. + flows: + authorizationCode: + authorizationUrl: 'https://authserver.example/authorization' + tokenUrl: 'https://authserver.example/token' + scopes: + variable-incomes: Escopo necessário para acesso à API Variable Incomes. O controle dos endpoints específicos é feito via permissions. + responses: + ResponseVariableIncomesBalances: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseVariableIncomesBalances' + OKResponseVariableIncomesProductList: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseVariableIncomesProductList' + OKResponseVariableIncomesProductIdentification: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseVariableIncomesProductIdentification' + OKResponseVariableIncomesTransactions: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseVariableIncomesTransactions' + OKResponseVariableIncomesTransactionsCurrent: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseVariableIncomesTransactionsCurrent' + ResponseVariableIncomesBroker: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseVariableIncomesBroker' + BadRequest: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/Locked/content/application~1json%3B%20charset%3Dutf-8/schema' + Forbidden: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/Locked/content/application~1json%3B%20charset%3Dutf-8/schema' + GatewayTimeout: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/Locked/content/application~1json%3B%20charset%3Dutf-8/schema' + InternalServerError: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/Locked/content/application~1json%3B%20charset%3Dutf-8/schema' + Locked: + description: Locked + content: + application/json; charset=utf-8: + schema: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + MethodNotAllowed: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/Locked/content/application~1json%3B%20charset%3Dutf-8/schema' + NotAcceptable: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/Locked/content/application~1json%3B%20charset%3Dutf-8/schema' + NotFound: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/Locked/content/application~1json%3B%20charset%3Dutf-8/schema' + TooManyRequests: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/Locked/content/application~1json%3B%20charset%3Dutf-8/schema' + Unauthorized: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/Locked/content/application~1json%3B%20charset%3Dutf-8/schema' + UnprocessableEntity: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/Locked/content/application~1json%3B%20charset%3Dutf-8/schema' + Default: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/Locked/content/application~1json%3B%20charset%3Dutf-8/schema' + SiteIsOverloaded: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/Locked/content/application~1json%3B%20charset%3Dutf-8/schema' + BadRequestWithAdditionalProperties: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/LockedWithAdditionalProperties/content/application~1json%3B%20charset%3Dutf-8/schema' + ForbiddenWithAdditionalProperties: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/LockedWithAdditionalProperties/content/application~1json%3B%20charset%3Dutf-8/schema' + GatewayTimeoutWithAdditionalProperties: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/LockedWithAdditionalProperties/content/application~1json%3B%20charset%3Dutf-8/schema' + InternalServerErrorWithAdditionalProperties: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/LockedWithAdditionalProperties/content/application~1json%3B%20charset%3Dutf-8/schema' + LockedWithAdditionalProperties: + description: Locked + content: + application/json; charset=utf-8: + schema: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + MethodNotAllowedWithAdditionalProperties: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/LockedWithAdditionalProperties/content/application~1json%3B%20charset%3Dutf-8/schema' + NotAcceptableWithAdditionalProperties: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/LockedWithAdditionalProperties/content/application~1json%3B%20charset%3Dutf-8/schema' + NotFoundWithAdditionalProperties: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/LockedWithAdditionalProperties/content/application~1json%3B%20charset%3Dutf-8/schema' + TooManyRequestsWithAdditionalProperties: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/LockedWithAdditionalProperties/content/application~1json%3B%20charset%3Dutf-8/schema' + UnauthorizedWithAdditionalProperties: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/LockedWithAdditionalProperties/content/application~1json%3B%20charset%3Dutf-8/schema' + UnprocessableEntityWithAdditionalProperties: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/LockedWithAdditionalProperties/content/application~1json%3B%20charset%3Dutf-8/schema' + DefaultWithAdditionalProperties: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/LockedWithAdditionalProperties/content/application~1json%3B%20charset%3Dutf-8/schema' + SiteIsOverloadedWithAdditionalProperties: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/responses/LockedWithAdditionalProperties/content/application~1json%3B%20charset%3Dutf-8/schema' diff --git a/swagger-apis/variable-incomes/1.0.0-rc3.0.yml b/swagger-apis/variable-incomes/1.0.0-rc3.0.yml new file mode 100644 index 000000000..69cde7fc6 --- /dev/null +++ b/swagger-apis/variable-incomes/1.0.0-rc3.0.yml @@ -0,0 +1,1791 @@ +openapi: 3.0.0 +info: + title: API Variable Incomes - Open Finance Brasil + description: | + API de informações de operações de Renda Variável Open Finance Brasil – Fase 4. + API que retorna informações de operações de investimento do tipo Renda Variável mantidas nas instituições transmissoras por seus clientes, incluindo dados como informações do produto, quantidade, saldos em posição do cliente, movimentações financeiras e detalhes da nota de negociação. + Não possui segregação entre pessoa natural e pessoa jurídica. Requer consentimento do cliente para todos os endpoints. + A granularidade de exposição de operações de renda variável se dá por cada ativo (ticker) da carteira do cliente. + Compartilhamento considera lote padrão e fracionário, entretanto, no Open Finance Brasil, as informações são consolidadas via ticker do lote padrão. + A defasagem em relação ao canal eletrônico da instituição deve ser o fechamento (pregão) do dia anterior (d-1). + + Em relação ao aluguel de ações: neste momento não faz parte do escopo de compartilhamento a carteira/posição de aluguel do cliente (ativos alugados e movimentações relacionadas a esses ativos). + Apenas deve ser compartilhado as transações de pagamento ou recebimento de juros oriundos dos contratos de ações alugadas (ou doadas) pelos clientes. + + Segue abaixo tabela com o escopo de produtos a ser considerado para compartilhamento: + ``` + |----------------------|-------------------------------|----------------------|-----------------------------------| + | CLASSE DE ATIVOS | PRODUTO | SUBPRODUTO | DENOMINAÇÃO | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Fundos de Investimentos | - | FIAGRO | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Ações | Subscrição | Bonus / Direito / Recibo | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Fundos de Investimentos | Fundo imobiliario | FII | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Ações | À vista | ON / PN / UNIT | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Fundos de índices | ETF | ETF de Renda Variável | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Fundos de índices | ETF | ETF Internacional | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Fundos de índices | ETF Renda Fixa | ETF Renda Fixa | + |----------------------|-------------------------------|----------------------|-----------------------------------| + ``` + version: 1.0.0-rc3.0 + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' + contact: + name: Governança do Open Finance Brasil – Especificações + email: gt-interfaces@openbankingbr.org + url: 'https://openbanking-brasil.github.io/areadesenvolvedor/' +servers: + - url: 'https://api.banco.com.br/open-banking/variable-incomes/v1' + description: Servidor de Produção + - url: 'https://apih.banco.com.br/open-banking/variable-incomes/v1' + description: Servidor de Homologação +tags: + - name: Product List + description: Obtém a lista de operações de Renda Variável mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + - name: Product Identification + description: Obtém os dados da operação de Renda Variável identificada por investmentId. + - name: Balances + description: Obtém a posição da operação de Renda Variável identificada por investmentId. + - name: Transactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Variável identificada por investmentId. + - name: Transactions Current + description: 'Obtém as movimentações recentes da operação de Renda Variável identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + - name: Broker Note Details + description: | + Obtém as informações da nota de negociação identificado nas movimentações de compra e venda de ativos em bolsa. + O brokerNoteId é enviado nos movimentos de compra ou venda de ativos e deve ser passada como parâmetro de entrada no endpoint “Nota de Negociação”.Como conteúdo do campo brokerNoteId é esperado que a transmissora gere um identificar único, imutável, para cada número (natural) de nota de negociação. +paths: + /investments: + get: + tags: + - Product List + summary: Obtém a lista de operações de Renda Variável mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + operationId: variableIncomesGetInvestments + description: Obtém a lista de operações de Renda Variável mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + parameters: + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + responses: + '200': + $ref: '#/components/responses/OKResponseVariableIncomesProductList' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - variable-incomes + '/investments/{investmentId}': + get: + tags: + - Product Identification + summary: Obtém os dados da operação de Renda Variável identificada por investmentId. + operationId: variableIncomesGetInvestmentsInvestmentId + description: Obtém os dados da operação de Renda Variável identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/OKResponseVariableIncomesProductIdentification' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - variable-incomes + '/investments/{investmentId}/balances': + get: + tags: + - Balances + summary: Obtém a posição da operação de Renda Variável identificada por investmentId. + operationId: variableIncomesGetInvestmentsInvestmentIdBalances + description: | + Obtém a posição da operação de Renda Variável identificada por investmentId. + + Nos casos em que não houver posição para o investimento, ou seja, quantidade de ativos e valores monetários zerados, mas o mesmo ainda estiver no prazo de exposição (até 12 meses após a última movimentação), deve se retornar status code 200 e para o payload de retorno considerar os valores abaixo. Campos não obrigatórios não devem ser retornados: + + - Valores monetários: 0.00 + - Quantidade de ativos: 0.00 + - Data e hora da última posição: mesmo conteúdo do campo requestDateTime + - Fator de preço: 0.00 + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseVariableIncomesBalances' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - variable-incomes + '/investments/{investmentId}/transactions': + get: + tags: + - Transactions + summary: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Variável identificada por investmentId. + operationId: variableIncomesGetInvestmentsInvestmentIdTransactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Variável identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDate' + - $ref: '#/components/parameters/toTransactionDate' + responses: + '200': + $ref: '#/components/responses/OKResponseVariableIncomesTransactions' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - variable-incomes + '/investments/{investmentId}/transactions-current': + get: + tags: + - Transactions Current + summary: 'Obtém as movimentações recentes da operação de Renda Variável identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + operationId: variableIncomesGetInvestmentsInvestmentIdTransactionsCurrent + description: 'Obtém as movimentações recentes da operação de Renda Variável identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDateCurrent' + - $ref: '#/components/parameters/toTransactionDateCurrent' + responses: + '200': + $ref: '#/components/responses/OKResponseVariableIncomesTransactionsCurrent' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - variable-incomes + '/investments/{investmentId}/broker-notes/{brokerNoteId}': + get: + tags: + - Broker Note Details + summary: | + Obtém as informações da nota de negociação identificado nas movimentações de compra e venda de ativos em bolsa. + O brokerNoteId é enviado nos movimentos de compra ou venda de ativos e deve ser passada como parâmetro de entrada no endpoint “Nota de Negociação”.Como conteúdo do campo brokerNoteId é esperado que a transmissora gere um identificar único, imutável, para cada número (natural) de nota de negociação. + operationId: variableIncomesGetInvestmentsInvestmentIdBrokerNotesBrokerNoteId + description: | + Obtém as informações da nota de negociação identificado nas movimentações de compra e venda de ativos em bolsa. + O brokerNoteId é enviado nos movimentos de compra ou venda de ativos e deve ser passada como parâmetro de entrada no endpoint “Nota de Negociação”.Como conteúdo do campo brokerNoteId é esperado que a transmissora gere um identificar único, imutável, para cada número (natural) de nota de negociação. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/BrokerNoteId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseVariableIncomesBroker' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - variable-incomes +components: + schemas: + ResponseVariableIncomesProductList: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseVariableIncomesProductListData' + links: + $ref: '#/components/schemas/VariableIncomesLinks' + meta: + $ref: '#/components/schemas/VariableIncomesMeta' + additionalProperties: false + ResponseVariableIncomesProductIdentification: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/ResponseVariableIncomesProductIdentificationData' + links: + $ref: '#/components/schemas/VariableIncomesLinks' + meta: + $ref: '#/components/schemas/VariableIncomesMeta' + additionalProperties: false + ResponseVariableIncomesBalances: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + items: + $ref: '#/components/schemas/ResponseVariableIncomesBalanceData' + links: + $ref: '#/components/schemas/VariableIncomesBalancesLinks' + meta: + $ref: '#/components/schemas/VariableIncomesBalancesMeta' + additionalProperties: false + ResponseVariableIncomesTransactions: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseVariableIncomesTransactionsData' + links: + $ref: '#/components/schemas/VariableIncomesLinks' + meta: + $ref: '#/components/schemas/MetaSingle' + additionalProperties: false + ResponseVariableIncomesTransactionsCurrent: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseVariableIncomesTransactionsCurrentData' + links: + $ref: '#/components/schemas/VariableIncomesLinks' + meta: + $ref: '#/components/schemas/MetaSingle' + additionalProperties: false + ResponseVariableIncomesProductListData: + type: object + description: Lista de ativos de renda variável mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + required: + - brandName + - companyCnpj + - investmentId + properties: + brandName: + type: string + description: 'Nome da Marca reportada pelo participante no Open Finance. Recomenda-se utilizar, sempre que possível, o mesmo nome de marca atribuído no campo do diretório Customer Friendly Server Name (Authorisation Server).' + pattern: '[\w\W\s]*' + example: Organização A + maxLength: 80 + companyCnpj: + type: string + description: 'Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. Deve-se ter apenas os números do CNPJ, sem máscara.' + maxLength: 14 + pattern: '^\d{14}$' + example: '21281590001660' + investmentId: + type: string + description: Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora. Nos casos em que o cliente, após completar 12 meses da última movimentação e com quantidade de ativos zerada (cliente não tem mais posse do produto sob custódia da transmissora), compre novamente o ativo que já investiu em períodos passados, manter o mesmo investmentId anteriormente utilizado. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + additionalProperties: false + ResponseVariableIncomesProductIdentificationData: + type: object + required: + - isinCode + - ticker + properties: + issuerInstitutionCnpjNumber: + type: string + description: CNPJ da instituição emissora. Caso a transmissora possua a informação o envio deste campo é obrigatório. + maxLength: 14 + pattern: '^\d{14}$' + example: '11225860000140' + isinCode: + type: string + description: | + Código ISIN da emissão, Código ISIN do produto, Código da emissora: código universal que identifica cada valor mobiliário ou instrumento financeiro, conforme Norma ISO 6166. + maxLength: 12 + pattern: '^[A-Z]{2}([A-Z0-9]){9}\d{1}$' + example: BRCST4CTF001 + ticker: + type: string + description: Código de negociação para identificação de ativos negociados em bolsa. + maxLength: 35 + pattern: '[\w\W\s]*' + example: PETR4 + additionalProperties: false + ResponseVariableIncomesBalanceData: + type: object + description: Lista de títulos de renda fixa bancária mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento + required: + - referenceDate + - priceFactor + - grossAmount + - blockedBalance + - quantity + - closingPrice + properties: + referenceDate: + type: string + format: date + description: Posição fechada para o ativo da data do dia anterior. + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2023-01-07' + maxLength: 10 + priceFactor: + type: string + format: double + description: | + Fator que indica o número de ações utilizadas para a formação do preço. Valor informado deve ser maior que zero. + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + example: '100.0005' + grossAmount: + $ref: '#/components/schemas/VariableIncomesBalancesGrossAmount' + blockedBalance: + $ref: '#/components/schemas/VariableIncomesBalancesBlockedBalance' + quantity: + type: string + format: double + description: Quatidade total do ativo na data de referência. + pattern: '^-?\d{1,15}\.\d{2,8}$' + maxLength: 25 + example: '1000.00000004' + closingPrice: + $ref: '#/components/schemas/VariableIncomesBalancesClosingPrice' + ResponseVariableIncomesTransactionsData: + type: object + required: + - type + - transactionType + - transactionDate + - transactionValue + - transactionId + properties: + type: + $ref: '#/components/schemas/EnumVariableIncomesTransactionsType' + transactionType: + $ref: '#/components/schemas/EnumVariableIncomesTransactionsTransactionType' + transactionTypeAdditionalInfo: + type: string + description: | + Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com o valor 'OUTROS'. + maxLength: 100 + pattern: '[\w\W\s]*' + transactionDate: + type: string + format: date + description: | + Data da movimentação. + + [Restrição] Data do pregão: compartilhar movimentos até a data da posição. + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + priceFactor: + type: string + format: double + description: | + Fator que indica o número de ações utilizadas para a formação do preço. Valor informado deve ser maior que zero. + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + example: '100.0005' + transactionUnitPrice: + type: object + description: | + Preço unitário da movimentação: valor da unidade do produto na movimentação do investimento. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA' ou 'VENDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.0004' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionQuantity: + type: string + format: double + description: | + Quantidade de ativos movimentados. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA' ou 'ALUGUEIS'. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.00000025' + transactionValue: + type: object + description: Valor da operação realizada pelo cliente. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionId: + type: string + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + description: Código ou identificador único prestado pela instituição que mantém a representação individual do movimento. + brokerNoteId: + type: string + description: | + Identificador da nota de negociação. + + [Restrição] Informação de envio obrigatório caso o motivo da movimentação seja compra ou venda. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: XWYZ555019929279212650822221989319252233 + additionalProperties: false + ResponseVariableIncomesTransactionsCurrentData: + type: object + required: + - type + - transactionType + - transactionDate + - transactionValue + - transactionId + properties: + type: + $ref: '#/components/schemas/EnumVariableIncomesTransactionsCurrentType' + transactionType: + $ref: '#/components/schemas/EnumVariableIncomesTransactionsCurrentTransactionType' + transactionTypeAdditionalInfo: + type: string + description: | + Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com o valor 'OUTROS'. + maxLength: 100 + pattern: '[\w\W\s]*' + transactionDate: + type: string + format: date + description: | + Data da movimentação. + + [Restrição] Data do pregão: compartilhar movimentos até a data da posição. + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + priceFactor: + type: string + format: double + description: | + Fator que indica o número de ações utilizadas para a formação do preço. Valor informado deve ser maior que zero. + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + example: '100.0005' + transactionUnitPrice: + type: object + description: | + Preço unitário da movimentação: valor da unidade do produto na movimentação do investimento. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA' ou 'VENDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.0004' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionQuantity: + type: string + format: double + description: | + Quantidade de ativos movimentados. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA' ou 'ALUGUEIS'. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.00000025' + transactionValue: + type: object + description: Valor da operação realizada pelo cliente. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionId: + type: string + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + description: Código ou identificador único prestado pela instituição que mantém a representação individual do movimento. + brokerNoteId: + type: string + description: | + Identificador da nota de negociação. + + [Restrição] Informação de envio obrigatório caso o motivo da movimentação seja compra ou venda. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: XWYZ555019929279212650822221989319252233 + additionalProperties: false + VariableIncomesBalancesBlockedBalance: + type: object + description: 'Valor não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros).' + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + VariableIncomesBalancesClosingPrice: + type: object + description: Preço de fechamento da data de referência. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '1000.0004' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + VariableIncomesBalancesGrossAmount: + type: object + description: 'Valor do investimento anterior à dedução de impostos, taxas e tarifas (se houver), atualizado na data de referência. Quantidade de ativos dividido pelo Fator de cotação e multiplicado pelo pelo preço de fechamento da data de referência.' + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + VariableIncomesBalancesLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + VariableIncomesBalancesMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + MetaSingle: + type: object + description: Meta informação referente a API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + VariableIncomesMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + VariableIncomesLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + EnumVariableIncomesTransactionsType: + type: string + description: | + Tipo de movimentação na visão de investimento: entrada ou saída. Nos casos de pagamento de dividendos, JCP e aluguéis, fica convencionado que será considerado que o tipo de movimento será saída. + enum: + - ENTRADA + - SAIDA + example: ENTRADA + EnumVariableIncomesTransactionsTransactionType: + type: string + description: | + O campo deve classificar a movimentação em um dos tipos descritos: compra, venda, dividendos, JCP, aluguéis, transferência de custódia, transferência de titularidade e outros. + O transmissor deve classificar as movimentações disponíveis associando-a a um dos itens do Enum listado neste campo. + A opção OUTROS só deve ser utilizada para os casos em que de fato a movimentação compartilhada não possa ser classificada como um dos itens deste Enum. + A expressão “aluguéis” deverá ser utilizada apenas para informar os juros/remuneração pagos/recebidos pelo cliente dos contratos de ações alugadas, seguindo o mesmo entendimento de ENTRADA/SAÍDA da expressão “dividendos”. + enum: + - COMPRA + - VENDA + - DIVIDENDOS + - JCP + - ALUGUEIS + - TRANSFERENCIA_CUSTODIA + - TRANSFERENCIA_TITULARIDADE + - OUTROS + example: DIVIDENDOS + EnumVariableIncomesTransactionsCurrentType: + type: string + description: | + Tipo de movimentação na visão de investimento: entrada ou saída. Nos casos de pagamento de dividendos, JCP e aluguéis, fica convencionado que será considerado que o tipo de movimento será saída. + enum: + - ENTRADA + - SAIDA + example: ENTRADA + EnumVariableIncomesTransactionsCurrentTransactionType: + type: string + description: | + O campo deve classificar a movimentação em um dos tipos descritos: compra, venda, dividendos, JCP, aluguéis, transferência de custódia, transferência de titularidade e outros. + O transmissor deve classificar as movimentações disponíveis associando-a a um dos itens do Enum listado neste campo. + A opção OUTROS só deve ser utilizada para os casos em que de fato a movimentação compartilhada não possa ser classificada como um dos itens deste Enum. + A expressão “aluguéis” deverá ser utilizada apenas para informar os juros/remuneração pagos/recebidos pelo cliente dos contratos de ações alugadas, seguindo o mesmo entendimento de ENTRADA/SAÍDA da expressão “dividendos”. + enum: + - COMPRA + - VENDA + - DIVIDENDOS + - JCP + - ALUGUEIS + - TRANSFERENCIA_CUSTODIA + - TRANSFERENCIA_TITULARIDADE + - OUTROS + example: DIVIDENDOS + ResponseVariableIncomesBroker: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/ResponseVariableIncomesBrokerData' + links: + $ref: '#/components/schemas/VariableIncomesLinks' + meta: + $ref: '#/components/schemas/VariableIncomesMeta' + additionalProperties: false + ResponseVariableIncomesBrokerData: + type: object + required: + - brokerNoteNumber + - grossValue + - brokerageFee + - clearingSettlementFee + - clearingRegistrationFee + - stockExchangeAssetTradeNoticeFee + - stockExchangeFee + - clearingCustodyFee + - taxes + - incomeTax + - netValue + properties: + brokerNoteNumber: + type: string + description: Identificador da nota de negociação. + maxLength: 16 + pattern: '^\d{1,16}$' + example: '1854009930314350' + grossValue: + type: object + description: o valor da nota de negociação é o somatório das operações realizadas. Total de compra e venda do dia. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '5000.0024' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + brokerageFee: + type: object + description: | + a taxa de corretagem incide sobre o valor bruto da nota de negociação, e é livremente pactuada entre o investidor e o seu intermediário. + Pode ser cobrada como um valor fixo por operação, ou um como um percentual sobre o valor negociado, ou ainda de forma mista, conforme guia CVM do investidor. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + clearingSettlementFee: + type: object + description: Valor cobrado para liquidação na custódia. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + clearingRegistrationFee: + type: object + description: Valor cobrado para registro na custódia. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + stockExchangeAssetTradeNoticeFee: + type: object + description: Valor cobrada pela bolsa pelo aviso de negociação de ativo. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + stockExchangeFee: + type: object + description: Valor cobrado pela bolsa para remunerar os serviços de registro prestados. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + clearingCustodyFee: + type: object + description: Taxa cobrada pelas IF para custódia. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + taxes: + type: object + description: 'Impostos cobrados na operação, exceto imposto de renda.' + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + incomeTax: + type: object + description: Imposto de renda retido na fonte. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + netValue: + type: object + description: Valor líquido da nota de negociação após despesas com taxa de corretagem, taxa de liquidação, taxa de registro, taxa A.N.A, emolumentos, taxa de custódia, impostos e IRRF. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '4889.0012' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + additionalProperties: false + ResponseErrorMetaSingle: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + $ref: '#/components/schemas/MetaOnlyRequestDateTime' + MetaOnlyRequestDateTime: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + ResponseErrorWithAbleAdditionalProperties: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + $ref: '#/components/schemas/MetaWithAbleAdditionalProperties' + MetaWithAbleAdditionalProperties: + type: object + description: Meta informações referente à API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + parameters: + InvestmentId: + name: investmentId + in: path + description: Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora. + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + example: '92792126019929200000000000000000000000000' + Authorization: + name: Authorization + in: header + description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado + required: true + schema: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + xFapiAuthDate: + name: x-fapi-auth-date + in: header + description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a RFC7231. Exemplo: Sun, 10 Sep 2017 19:43:31 UTC.' + required: false + schema: + type: string + pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$' + minLength: 29 + maxLength: 29 + xFapiCustomerIpAddress: + name: x-fapi-customer-ip-address + in: header + description: O endereço IP do usuário se estiver atualmente logado com o receptor. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiInteractionId: + name: x-fapi-interaction-id + in: header + description: Um UUID RFC4122 usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela receptora (client) e o seu valor deve ser "espelhado" pela transmissora (server) no cabeçalho de resposta. + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + xCustomerUserAgent: + name: x-customer-user-agent + in: header + description: Indica o user-agent que o usuário utiliza. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + page: + name: page + in: query + description: Número da página que está sendo requisitada (o valor da primeira página é 1). + schema: + type: integer + default: 1 + minimum: 1 + maximum: 2147483647 + format: int32 + pageSize: + name: page-size + in: query + description: Quantidade total de registros por páginas. A transmissora deve considerar entrada como 25, caso seja informado algum valor menor pela receptora. Enquanto houver mais que 25 registros a enviar, a transmissora deve considerar o mínimo por página como 25. Somente a última página retornada (ou primeira, no caso de página única) pode conter menos de 25 registros. Mais informações, acesse Especificações de APIs > Padrões > Paginação. + schema: + type: integer + default: 25 + minimum: 25 + format: int32 + maximum: 1000 + pagination-key: + name: pagination-key + in: query + description: 'Identificador de rechamada, utilizado para evitar a contagem de chamadas ao endpoint durante a paginação.' + schema: + type: string + maxLength: 2048 + pattern: '[\w\W\s]*' + fromTransactionDate: + name: fromTransactionDate + description: | + Data inicial de filtragem. + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + format: date + maxLength: 10 + example: '2022-01-01' + toTransactionDate: + name: toTransactionDate + description: | + Data final de filtragem. + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + format: date + maxLength: 10 + example: '2022-12-31' + fromTransactionDateCurrent: + name: fromTransactionDate + description: | + Data inicial de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + format: date + maxLength: 10 + example: '2023-02-01' + toTransactionDateCurrent: + name: toTransactionDate + description: | + Data final de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + format: date + maxLength: 10 + example: '2023-02-01' + BrokerNoteId: + name: brokerNoteId + in: path + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + example: '92792126019929200000000000000000000000000' + securitySchemes: + OAuth2AuthorizationCode: + type: oauth2 + description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados. + flows: + authorizationCode: + authorizationUrl: 'https://authserver.example/authorization' + tokenUrl: 'https://authserver.example/token' + scopes: + variable-incomes: Escopo necessário para acesso à API Variable Incomes. O controle dos endpoints específicos é feito via permissions. + responses: + ResponseVariableIncomesBalances: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseVariableIncomesBalances' + OKResponseVariableIncomesProductList: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseVariableIncomesProductList' + OKResponseVariableIncomesProductIdentification: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseVariableIncomesProductIdentification' + OKResponseVariableIncomesTransactions: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseVariableIncomesTransactions' + OKResponseVariableIncomesTransactionsCurrent: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseVariableIncomesTransactionsCurrent' + ResponseVariableIncomesBroker: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseVariableIncomesBroker' + BadRequest: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Forbidden: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + GatewayTimeout: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + InternalServerError: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Locked: + description: Locked + content: + application/json; charset=utf-8: + schema: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + MethodNotAllowed: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + NotAcceptable: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + NotFound: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TooManyRequests: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Unauthorized: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + UnprocessableEntity: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Default: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + SiteIsOverloaded: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + BadRequestWithAdditionalProperties: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + ForbiddenWithAdditionalProperties: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + GatewayTimeoutWithAdditionalProperties: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + InternalServerErrorWithAdditionalProperties: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + LockedWithAdditionalProperties: + description: Locked + content: + application/json; charset=utf-8: + schema: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + MethodNotAllowedWithAdditionalProperties: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + NotAcceptableWithAdditionalProperties: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + NotFoundWithAdditionalProperties: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + TooManyRequestsWithAdditionalProperties: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + UnauthorizedWithAdditionalProperties: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + UnprocessableEntityWithAdditionalProperties: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + DefaultWithAdditionalProperties: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + SiteIsOverloadedWithAdditionalProperties: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' diff --git a/swagger-apis/variable-incomes/1.0.0.yml b/swagger-apis/variable-incomes/1.0.0.yml new file mode 100644 index 000000000..92ee3fa55 --- /dev/null +++ b/swagger-apis/variable-incomes/1.0.0.yml @@ -0,0 +1,1837 @@ +openapi: 3.0.0 +info: + title: API Variable Incomes - Open Finance Brasil + description: | + API de informações de operações de Renda Variável Open Finance Brasil – Fase 4. + API que retorna informações de operações de investimento do tipo Renda Variável mantidas nas instituições transmissoras por seus clientes, incluindo dados como informações do produto, quantidade, saldos em posição do cliente, movimentações financeiras e detalhes da nota de negociação. + Não possui segregação entre pessoa natural e pessoa jurídica. Requer consentimento do cliente para todos os endpoints. + A granularidade de exposição de operações de renda variável se dá por cada ativo (ticker) da carteira do cliente. + Compartilhamento considera lote padrão e fracionário, entretanto, no Open Finance Brasil, as informações são consolidadas via ticker do lote padrão. + A defasagem em relação ao canal eletrônico da instituição deve ser o fechamento (pregão) do dia anterior (d-1). + + Em relação ao aluguel de ações: neste momento não faz parte do escopo de compartilhamento a carteira/posição de aluguel do cliente (ativos alugados e movimentações relacionadas a esses ativos). + Apenas deve ser compartilhado as transações de pagamento ou recebimento de juros oriundos dos contratos de ações alugadas (ou doadas) pelos clientes. + + Para o identificador do investimento (investmentId) deve ser adotado o seguinte comportamento: + + - Após 12 meses sem movimentações e com quantidade de ativos zerada, o resourceId correspondente ao investmentId em questão deve passar ao status UNAVAILABLE (considerando consentimento válido); + + - Nas situações em que o cliente compre novamente o ativo após um período de 12 meses sem movimentação e com quantidade de ativos zerada, o mesmo identificador (investmentId) deve ser utilizado. Especificamente para tais produtos, o status do recurso na resources deve passar de UNAVAILABLE para AVAILABLE. + + Segue abaixo tabela com o escopo de produtos a ser considerado para compartilhamento: + ``` + |----------------------|-------------------------------|----------------------|-----------------------------------| + | CLASSE DE ATIVOS | PRODUTO | SUBPRODUTO | DENOMINAÇÃO | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Fundos de Investimentos | - | FIAGRO | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Ações | Subscrição | Bonus / Direito / Recibo | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Fundos de Investimentos | Fundo imobiliario | FII | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Ações | À vista | ON / PN / UNIT | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Fundos de índices | ETF | ETF de Renda Variável | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Fundos de índices | ETF | ETF Internacional | + |----------------------|-------------------------------|----------------------|-----------------------------------| + | Renda Variável | Fundos de índices | ETF Renda Fixa | ETF Renda Fixa | + |----------------------|-------------------------------|----------------------|-----------------------------------| + ``` + version: 1.0.0 + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' + contact: + name: Governança do Open Finance Brasil – Especificações + email: gt-interfaces@openbankingbr.org + url: 'https://openbanking-brasil.github.io/areadesenvolvedor/' +servers: + - url: 'https://api.banco.com.br/open-banking/variable-incomes/v1' + description: Servidor de Produção + - url: 'https://apih.banco.com.br/open-banking/variable-incomes/v1' + description: Servidor de Homologação +tags: + - name: Product List + description: Obtém a lista de operações de Renda Variável mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + - name: Product Identification + description: Obtém os dados da operação de Renda Variável identificada por investmentId. + - name: Balances + description: Obtém a posição da operação de Renda Variável identificada por investmentId. + - name: Transactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Variável identificada por investmentId. + - name: Transactions Current + description: 'Obtém as movimentações recentes da operação de Renda Variável identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + - name: Broker Note Details + description: | + Obtém as informações da nota de negociação identificado nas movimentações de compra e venda de ativos em bolsa. + O brokerNoteId é enviado nos movimentos de compra ou venda de ativos e deve ser passada como parâmetro de entrada no endpoint “Nota de Negociação”.Como conteúdo do campo brokerNoteId é esperado que a transmissora gere um identificar único, imutável, para cada número (natural) de nota de negociação. +paths: + /investments: + get: + tags: + - Product List + summary: Obtém a lista de operações de Renda Variável mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + operationId: variableIncomesGetInvestments + description: Obtém a lista de operações de Renda Variável mantidas pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + parameters: + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + responses: + '200': + $ref: '#/components/responses/OKResponseVariableIncomesProductList' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - variable-incomes + '/investments/{investmentId}': + get: + tags: + - Product Identification + summary: Obtém os dados da operação de Renda Variável identificada por investmentId. + operationId: variableIncomesGetInvestmentsInvestmentId + description: Obtém os dados da operação de Renda Variável identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/OKResponseVariableIncomesProductIdentification' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - variable-incomes + '/investments/{investmentId}/balances': + get: + tags: + - Balances + summary: Obtém a posição da operação de Renda Variável identificada por investmentId. + operationId: variableIncomesGetInvestmentsInvestmentIdBalances + description: | + Obtém a posição da operação de Renda Variável identificada por investmentId. + + Nos casos em que não houver posição para o investimento, ou seja, quantidade de ativos e valores monetários zerados, mas o mesmo ainda estiver no prazo de exposição (até 12 meses após a última movimentação), deve se retornar status code 200 e para o payload de retorno considerar os valores abaixo. Campos não obrigatórios não devem ser retornados: + + - Valores monetários: 0.00 + - Quantidade de ativos: 0.00 + - Data e hora da última posição: mesmo conteúdo do campo requestDateTime + - Fator de preço: 0.00 + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseVariableIncomesBalances' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - variable-incomes + '/investments/{investmentId}/transactions': + get: + tags: + - Transactions + summary: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Variável identificada por investmentId. + operationId: variableIncomesGetInvestmentsInvestmentIdTransactions + description: Obtém as movimentações históricas (últimos 12 meses) da operação de Renda Variável identificada por investmentId. + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDate' + - $ref: '#/components/parameters/toTransactionDate' + responses: + '200': + $ref: '#/components/responses/OKResponseVariableIncomesTransactions' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - variable-incomes + '/investments/{investmentId}/transactions-current': + get: + tags: + - Transactions Current + summary: 'Obtém as movimentações recentes da operação de Renda Variável identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + operationId: variableIncomesGetInvestmentsInvestmentIdTransactionsCurrent + description: 'Obtém as movimentações recentes da operação de Renda Variável identificada por investmentId. O período a ser considerado para apresentação de movimentações será de até 7 dias - 7 dias anteriores da consulta, incluindo o dia da consulta (D-6).' + parameters: + - $ref: '#/components/parameters/InvestmentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/pageSize' + - $ref: '#/components/parameters/pagination-key' + - $ref: '#/components/parameters/fromTransactionDateCurrent' + - $ref: '#/components/parameters/toTransactionDateCurrent' + responses: + '200': + $ref: '#/components/responses/OKResponseVariableIncomesTransactionsCurrent' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntity' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '504': + $ref: '#/components/responses/GatewayTimeout' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + $ref: '#/components/responses/Default' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - variable-incomes + '/broker-notes/{brokerNoteId}': + get: + tags: + - Broker Note Details + summary: | + Obtém as informações da nota de negociação identificado nas movimentações de compra e venda de ativos em bolsa. + O brokerNoteId é enviado nos movimentos de compra ou venda de ativos e deve ser passada como parâmetro de entrada no endpoint “Nota de Negociação”.Como conteúdo do campo brokerNoteId é esperado que a transmissora gere um identificar único, imutável, para cada número (natural) de nota de negociação. + operationId: variableIncomesGetInvestmentsInvestmentIdBrokerNotesBrokerNoteId + description: | + Obtém as informações da nota de negociação identificado nas movimentações de compra e venda de ativos em bolsa. + O brokerNoteId é enviado nos movimentos de compra ou venda de ativos e deve ser passada como parâmetro de entrada no endpoint “Nota de Negociação”.Como conteúdo do campo brokerNoteId é esperado que a transmissora gere um identificar único, imutável, para cada número (natural) de nota de negociação. + parameters: + - $ref: '#/components/parameters/BrokerNoteId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/ResponseVariableIncomesBroker' + '400': + $ref: '#/components/responses/BadRequestWithAdditionalProperties' + '401': + $ref: '#/components/responses/UnauthorizedWithAdditionalProperties' + '403': + $ref: '#/components/responses/ForbiddenWithAdditionalProperties' + '404': + $ref: '#/components/responses/NotFoundWithAdditionalProperties' + '405': + $ref: '#/components/responses/MethodNotAllowedWithAdditionalProperties' + '406': + $ref: '#/components/responses/NotAcceptableWithAdditionalProperties' + '422': + $ref: '#/components/responses/UnprocessableEntityWithAdditionalProperties' + '423': + $ref: '#/components/responses/LockedWithAdditionalProperties' + '429': + $ref: '#/components/responses/TooManyRequestsWithAdditionalProperties' + '500': + $ref: '#/components/responses/InternalServerErrorWithAdditionalProperties' + '504': + $ref: '#/components/responses/GatewayTimeoutWithAdditionalProperties' + '529': + $ref: '#/components/responses/SiteIsOverloadedWithAdditionalProperties' + default: + $ref: '#/components/responses/DefaultWithAdditionalProperties' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - variable-incomes +components: + schemas: + ResponseVariableIncomesProductList: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseVariableIncomesProductListData' + links: + $ref: '#/components/schemas/VariableIncomesProductListLinks' + meta: + $ref: '#/components/schemas/VariableIncomesMeta' + additionalProperties: false + ResponseVariableIncomesProductIdentification: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/ResponseVariableIncomesProductIdentificationData' + links: + $ref: '#/components/schemas/VariableIncomesLinks' + meta: + $ref: '#/components/schemas/VariableIncomesMeta' + additionalProperties: false + ResponseVariableIncomesBalances: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + items: + $ref: '#/components/schemas/ResponseVariableIncomesBalanceData' + links: + $ref: '#/components/schemas/VariableIncomesBalancesLinks' + meta: + $ref: '#/components/schemas/VariableIncomesBalancesMeta' + additionalProperties: false + ResponseVariableIncomesTransactions: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseVariableIncomesTransactionsData' + links: + $ref: '#/components/schemas/VariableIncomesLinks' + meta: + $ref: '#/components/schemas/MetaSingle' + additionalProperties: false + ResponseVariableIncomesTransactionsCurrent: + type: object + required: + - data + - links + - meta + properties: + data: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ResponseVariableIncomesTransactionsCurrentData' + links: + $ref: '#/components/schemas/VariableIncomesLinks' + meta: + $ref: '#/components/schemas/MetaSingle' + additionalProperties: false + ResponseVariableIncomesProductListData: + type: object + description: Lista de ativos de renda variável mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. + required: + - brandName + - companyCnpj + - investmentId + properties: + brandName: + type: string + description: 'Nome da Marca reportada pelo participante no Open Finance. Recomenda-se utilizar, sempre que possível, o mesmo nome de marca atribuído no campo do diretório Customer Friendly Server Name (Authorisation Server).' + pattern: '[\w\W\s]*' + example: Organização A + maxLength: 80 + companyCnpj: + type: string + description: 'Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. Deve-se ter apenas os números do CNPJ, sem máscara.' + maxLength: 14 + pattern: '^\d{14}$' + example: '21281590001660' + investmentId: + type: string + description: Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora. Nos casos em que o cliente, após completar 12 meses da última movimentação e com quantidade de ativos zerada (cliente não tem mais posse do produto sob custódia da transmissora), compre novamente o ativo que já investiu em períodos passados, manter o mesmo investmentId anteriormente utilizado. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: '92792126019929200000000000000000000000000' + additionalProperties: false + ResponseVariableIncomesProductIdentificationData: + type: object + required: + - isinCode + - ticker + properties: + issuerInstitutionCnpjNumber: + type: string + description: CNPJ da instituição emissora. Caso a transmissora possua a informação o envio deste campo é obrigatório. + maxLength: 14 + pattern: '^\d{14}$' + example: '11225860000140' + isinCode: + type: string + description: | + Código ISIN da emissão, Código ISIN do produto, Código da emissora: código universal que identifica cada valor mobiliário ou instrumento financeiro, conforme Norma ISO 6166. + maxLength: 12 + pattern: '^[A-Z]{2}([A-Z0-9]){9}\d{1}$' + example: BRCST4CTF001 + ticker: + type: string + description: Código de negociação para identificação de ativos negociados em bolsa. + maxLength: 35 + pattern: '[\w\W\s]*' + example: PETR4 + additionalProperties: false + ResponseVariableIncomesBalanceData: + type: object + description: Lista de títulos de renda fixa bancária mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento + required: + - referenceDate + - priceFactor + - grossAmount + - blockedBalance + - quantity + - closingPrice + properties: + referenceDate: + type: string + format: date + description: Posição fechada para o ativo da data do dia anterior. + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2023-01-07' + maxLength: 10 + priceFactor: + type: string + format: double + description: | + Fator que indica o número de ações utilizadas para a formação do preço. Valor informado deve ser maior que zero. + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + example: '100.0005' + grossAmount: + $ref: '#/components/schemas/VariableIncomesBalancesGrossAmount' + blockedBalance: + $ref: '#/components/schemas/VariableIncomesBalancesBlockedBalance' + quantity: + type: string + format: double + description: Quatidade total do ativo na data de referência. + pattern: '^-?\d{1,15}\.\d{2,8}$' + maxLength: 25 + example: '1000.00000004' + closingPrice: + $ref: '#/components/schemas/VariableIncomesBalancesClosingPrice' + ResponseVariableIncomesTransactionsData: + type: object + required: + - type + - transactionType + - transactionDate + - transactionValue + - transactionId + properties: + type: + $ref: '#/components/schemas/EnumVariableIncomesTransactionsType' + transactionType: + $ref: '#/components/schemas/EnumVariableIncomesTransactionsTransactionType' + transactionTypeAdditionalInfo: + type: string + description: | + Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com o valor 'OUTROS'. + maxLength: 100 + pattern: '[\w\W\s]*' + transactionDate: + type: string + format: date + description: | + Data da movimentação. + + [Restrição] Data do pregão: compartilhar movimentos até a data da posição. + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + priceFactor: + type: string + format: double + description: | + Fator que indica o número de ações utilizadas para a formação do preço. Valor informado deve ser maior que zero. + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + example: '100.0005' + transactionUnitPrice: + type: object + description: | + Preço unitário da movimentação: valor da unidade do produto na movimentação do investimento. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA' ou 'VENDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.0004' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionQuantity: + type: string + format: double + description: | + Quantidade de ativos movimentados. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA' ou 'ALUGUEIS'. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.00000025' + transactionValue: + type: object + description: Valor da operação realizada pelo cliente. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionId: + type: string + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + description: Código ou identificador único prestado pela instituição que mantém a representação individual do movimento. + brokerNoteId: + type: string + description: | + Identificador da nota de negociação. + + [Restrição] Informação de envio obrigatório caso o motivo da movimentação seja compra ou venda. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: XWYZ555019929279212650822221989319252233 + additionalProperties: false + ResponseVariableIncomesTransactionsCurrentData: + type: object + required: + - type + - transactionType + - transactionDate + - transactionValue + - transactionId + properties: + type: + $ref: '#/components/schemas/EnumVariableIncomesTransactionsCurrentType' + transactionType: + $ref: '#/components/schemas/EnumVariableIncomesTransactionsCurrentTransactionType' + transactionTypeAdditionalInfo: + type: string + description: | + Informação adicional do tipo de movimentação, para preenchimento no caso de movimentações não delimitadas no domínio. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com o valor 'OUTROS'. + maxLength: 100 + pattern: '[\w\W\s]*' + transactionDate: + type: string + format: date + description: | + Data da movimentação. + + [Restrição] Data do pregão: compartilhar movimentos até a data da posição. + maxLength: 10 + minLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2018-02-15' + priceFactor: + type: string + format: double + description: | + Fator que indica o número de ações utilizadas para a formação do preço. Valor informado deve ser maior que zero. + pattern: '^\d{1,15}\.\d{2,8}$' + maxLength: 24 + example: '100.0005' + transactionUnitPrice: + type: object + description: | + Preço unitário da movimentação: valor da unidade do produto na movimentação do investimento. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA' ou 'VENDA'. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 21 + pattern: '^-?\d{1,15}\.\d{2,4}$' + example: '1000.0004' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionQuantity: + type: string + format: double + description: | + Quantidade de ativos movimentados. + + [Restrição] Campo de preenchimento obrigatório pelas participantes quando o campo 'transactionType' for preenchido com os valores 'COMPRA', 'VENDA' ou 'ALUGUEIS'. + maxLength: 24 + pattern: '^\d{1,15}\.\d{2,8}$' + example: '42.00000025' + transactionValue: + type: object + description: Valor da operação realizada pelo cliente. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + maxLength: 20 + pattern: '^\d{1,15}\.\d{2,4}$' + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + transactionId: + type: string + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: ABCD2126019929279212650822221989319253344 + description: Código ou identificador único prestado pela instituição que mantém a representação individual do movimento. + brokerNoteId: + type: string + description: | + Identificador da nota de negociação. + + [Restrição] Informação de envio obrigatório caso o motivo da movimentação seja compra ou venda. + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$' + example: XWYZ555019929279212650822221989319252233 + additionalProperties: false + VariableIncomesBalancesBlockedBalance: + type: object + description: Valor não disponível para movimentação naquele momento por qualquer motivo (bloqueio judicial, bloqueio em garantia, entre outros). Prazo de carência não é considerado como bloqueio. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^\d{1,15}\.\d{2,4}$' + maxLength: 20 + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + VariableIncomesBalancesClosingPrice: + type: object + description: Preço de fechamento da data de referência. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '1000.0004' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + VariableIncomesBalancesGrossAmount: + type: object + description: 'Valor do investimento anterior à dedução de impostos, taxas e tarifas (se houver), atualizado na data de referência. Quantidade de ativos dividido pelo Fator de cotação e multiplicado pelo pelo preço de fechamento da data de referência.' + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '1000.04' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + VariableIncomesBalancesLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + VariableIncomesBalancesMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + MetaSingle: + type: object + description: Meta informação referente a API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + VariableIncomesMeta: + type: object + description: Meta informações referente a API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + additionalProperties: false + VariableIncomesProductListLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + last: + type: string + format: uri + maxLength: 2000 + description: URI da última página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%.\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%\+.~#?&\/\/=]*)$' + VariableIncomesLinks: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + first: + type: string + format: uri + maxLength: 2000 + description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + prev: + type: string + format: uri + maxLength: 2000 + description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + next: + type: string + format: uri + maxLength: 2000 + description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + EnumVariableIncomesTransactionsType: + type: string + description: | + Tipo de movimentação na visão de investimento: entrada ou saída. Nos casos de pagamento de dividendos, JCP e aluguéis, fica convencionado que será considerado que o tipo de movimento será saída. + enum: + - ENTRADA + - SAIDA + example: SAIDA + EnumVariableIncomesTransactionsTransactionType: + type: string + description: | + O campo deve classificar a movimentação em um dos tipos descritos: compra, venda, dividendos, JCP, aluguéis, transferência de custódia, transferência de titularidade e outros. + O transmissor deve classificar as movimentações disponíveis associando-a a um dos itens do Enum listado neste campo. + A opção OUTROS só deve ser utilizada para os casos em que de fato a movimentação compartilhada não possa ser classificada como um dos itens deste Enum. + A expressão “aluguéis” deverá ser utilizada apenas para informar os juros/remuneração pagos/recebidos pelo cliente dos contratos de ações alugadas, seguindo o mesmo entendimento de ENTRADA/SAÍDA da expressão “dividendos”. + enum: + - COMPRA + - VENDA + - DIVIDENDOS + - JCP + - ALUGUEIS + - TRANSFERENCIA_CUSTODIA + - TRANSFERENCIA_TITULARIDADE + - OUTROS + example: DIVIDENDOS + EnumVariableIncomesTransactionsCurrentType: + type: string + description: | + Tipo de movimentação na visão de investimento: entrada ou saída. Nos casos de pagamento de dividendos, JCP e aluguéis, fica convencionado que será considerado que o tipo de movimento será saída. + enum: + - ENTRADA + - SAIDA + example: SAIDA + EnumVariableIncomesTransactionsCurrentTransactionType: + type: string + description: | + O campo deve classificar a movimentação em um dos tipos descritos: compra, venda, dividendos, JCP, aluguéis, transferência de custódia, transferência de titularidade e outros. + O transmissor deve classificar as movimentações disponíveis associando-a a um dos itens do Enum listado neste campo. + A opção OUTROS só deve ser utilizada para os casos em que de fato a movimentação compartilhada não possa ser classificada como um dos itens deste Enum. + A expressão “aluguéis” deverá ser utilizada apenas para informar os juros/remuneração pagos/recebidos pelo cliente dos contratos de ações alugadas, seguindo o mesmo entendimento de ENTRADA/SAÍDA da expressão “dividendos”. + enum: + - COMPRA + - VENDA + - DIVIDENDOS + - JCP + - ALUGUEIS + - TRANSFERENCIA_CUSTODIA + - TRANSFERENCIA_TITULARIDADE + - OUTROS + example: DIVIDENDOS + ResponseVariableIncomesBroker: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/ResponseVariableIncomesBrokerData' + links: + $ref: '#/components/schemas/VariableIncomesLinks' + meta: + $ref: '#/components/schemas/VariableIncomesMeta' + additionalProperties: false + ResponseVariableIncomesBrokerData: + type: object + required: + - brokerNoteNumber + - grossValue + - brokerageFee + - clearingSettlementFee + - clearingRegistrationFee + - stockExchangeAssetTradeNoticeFee + - stockExchangeFee + - clearingCustodyFee + - taxes + - incomeTax + - netValue + properties: + brokerNoteNumber: + type: string + description: Identificador da nota de negociação. + maxLength: 16 + pattern: '^\d{1,16}$' + example: '1854009930314350' + grossValue: + type: object + description: o valor da nota de negociação é o somatório das operações realizadas. Total de compra e venda do dia. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '5000.0024' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + brokerageFee: + type: object + description: | + a taxa de corretagem incide sobre o valor bruto da nota de negociação, e é livremente pactuada entre o investidor e o seu intermediário. + Pode ser cobrada como um valor fixo por operação, ou um como um percentual sobre o valor negociado, ou ainda de forma mista, conforme guia CVM do investidor. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + clearingSettlementFee: + type: object + description: Valor cobrado para liquidação na custódia. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + clearingRegistrationFee: + type: object + description: Valor cobrado para registro na custódia. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + stockExchangeAssetTradeNoticeFee: + type: object + description: Valor cobrada pela bolsa pelo aviso de negociação de ativo. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + stockExchangeFee: + type: object + description: Valor cobrado pela bolsa para remunerar os serviços de registro prestados. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + clearingCustodyFee: + type: object + description: Taxa cobrada pelas IF para custódia. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + taxes: + type: object + description: 'Impostos cobrados na operação, inclusive imposto de renda day-trade, exceto imposto de renda retido na fonte.' + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + incomeTax: + type: object + description: Imposto de renda retido na fonte. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '13.8751' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + netValue: + type: object + description: Valor líquido da nota de negociação após despesas com taxa de corretagem, taxa de liquidação, taxa de registro, taxa A.N.A, emolumentos, taxa de custódia, impostos e IRRF. + required: + - amount + - currency + properties: + amount: + type: string + format: double + description: Valor relacionado ao objeto. + pattern: '^-?\d{1,15}\.\d{2,4}$' + maxLength: 21 + example: '4889.0012' + currency: + type: string + description: 'Moeda referente ao valor monetário, seguindo o modelo ISO-4217.' + pattern: '^[A-Z]{3}$' + maxLength: 3 + example: BRL + additionalProperties: false + ResponseErrorMetaSingle: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + $ref: '#/components/schemas/MetaOnlyRequestDateTime' + MetaOnlyRequestDateTime: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + ResponseErrorWithAbleAdditionalProperties: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + $ref: '#/components/schemas/MetaWithAbleAdditionalProperties' + MetaWithAbleAdditionalProperties: + type: object + description: Meta informações referente à API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + parameters: + InvestmentId: + name: investmentId + in: path + description: Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora. + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + example: '92792126019929200000000000000000000000000' + Authorization: + name: Authorization + in: header + description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado + required: true + schema: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + xFapiAuthDate: + name: x-fapi-auth-date + in: header + description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a RFC7231. Exemplo: Sun, 10 Sep 2017 19:43:31 UTC.' + required: false + schema: + type: string + pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$' + minLength: 29 + maxLength: 29 + xFapiCustomerIpAddress: + name: x-fapi-customer-ip-address + in: header + description: O endereço IP do usuário se estiver atualmente logado com o receptor. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiInteractionId: + name: x-fapi-interaction-id + in: header + description: Um UUID RFC4122 usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela receptora (client) e o seu valor deve ser "espelhado" pela transmissora (server) no cabeçalho de resposta. + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + xCustomerUserAgent: + name: x-customer-user-agent + in: header + description: Indica o user-agent que o usuário utiliza. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + page: + name: page + in: query + description: Número da página que está sendo requisitada (o valor da primeira página é 1). + schema: + type: integer + default: 1 + minimum: 1 + maximum: 2147483647 + format: int32 + pageSize: + name: page-size + in: query + description: Quantidade total de registros por páginas. A transmissora deve considerar entrada como 25, caso seja informado algum valor menor pela receptora. Enquanto houver mais que 25 registros a enviar, a transmissora deve considerar o mínimo por página como 25. Somente a última página retornada (ou primeira, no caso de página única) pode conter menos de 25 registros. Mais informações, acesse Especificações de APIs > Padrões > Paginação. + schema: + type: integer + default: 25 + minimum: 25 + format: int32 + maximum: 1000 + pagination-key: + name: pagination-key + in: query + description: 'Identificador de rechamada, utilizado para evitar a contagem de chamadas ao endpoint durante a paginação.' + schema: + type: string + maxLength: 2048 + pattern: '[\w\W\s]*' + fromTransactionDate: + name: fromTransactionDate + description: | + Data inicial de filtragem. + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + format: date + maxLength: 10 + example: '2022-01-01' + toTransactionDate: + name: toTransactionDate + description: | + Data final de filtragem. + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + format: date + maxLength: 10 + example: '2022-12-31' + fromTransactionDateCurrent: + name: fromTransactionDate + description: | + Data inicial de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + [Restrição] Deve obrigatoriamente ser enviado caso o campo toTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + format: date + maxLength: 10 + example: '2023-02-01' + toTransactionDateCurrent: + name: toTransactionDate + description: | + Data final de filtragem. O período máximo utilizado no filtro é de 7 dias inclusive (D-6). + [Restrição] Deve obrigatoriamente ser enviado caso o campo fromTransactionDate seja informado. Caso não seja informado, deve ser assumido o dia atual. + required: false + in: query + schema: + type: string + format: date + maxLength: 10 + example: '2023-02-01' + BrokerNoteId: + name: brokerNoteId + in: path + description: 'Identifica de forma única o relacionamento do cliente com o produto, mantendo as regras de imutabilidade dentro da instituição transmissora.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + example: '92792126019929200000000000000000000000000' + securitySchemes: + OAuth2AuthorizationCode: + type: oauth2 + description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados. + flows: + authorizationCode: + authorizationUrl: 'https://authserver.example/authorization' + tokenUrl: 'https://authserver.example/token' + scopes: + variable-incomes: Escopo necessário para acesso à API Variable Incomes. O controle dos endpoints específicos é feito via permissions. + responses: + ResponseVariableIncomesBalances: + description: Dados obtidos com sucesso + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseVariableIncomesBalances' + OKResponseVariableIncomesProductList: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseVariableIncomesProductList' + OKResponseVariableIncomesProductIdentification: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseVariableIncomesProductIdentification' + OKResponseVariableIncomesTransactions: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseVariableIncomesTransactions' + OKResponseVariableIncomesTransactionsCurrent: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseVariableIncomesTransactionsCurrent' + ResponseVariableIncomesBroker: + description: Dados de fundos de investimentos obtidos com sucesso. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseVariableIncomesBroker' + BadRequest: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Forbidden: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + GatewayTimeout: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + InternalServerError: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Locked: + description: Locked + content: + application/json; charset=utf-8: + schema: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + MethodNotAllowed: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + NotAcceptable: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + NotFound: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + TooManyRequests: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Unauthorized: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + UnprocessableEntity: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + Default: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + SiteIsOverloaded: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorMetaSingle' + BadRequestWithAdditionalProperties: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + ForbiddenWithAdditionalProperties: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + GatewayTimeoutWithAdditionalProperties: + description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + InternalServerErrorWithAdditionalProperties: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + LockedWithAdditionalProperties: + description: Locked + content: + application/json; charset=utf-8: + schema: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - totalRecords + - totalPages + - requestDateTime + properties: + totalRecords: + type: integer + format: int32 + description: Número total de registros no resultado + example: 1 + totalPages: + type: integer + format: int32 + description: Número total de páginas no resultado + example: 1 + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + MethodNotAllowedWithAdditionalProperties: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + NotAcceptableWithAdditionalProperties: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + NotFoundWithAdditionalProperties: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + TooManyRequestsWithAdditionalProperties: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + UnauthorizedWithAdditionalProperties: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + UnprocessableEntityWithAdditionalProperties: + description: 'A sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + DefaultWithAdditionalProperties: + description: Erro inesperado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' + SiteIsOverloadedWithAdditionalProperties: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties' diff --git a/swagger-apis/variable-incomes/index.html b/swagger-apis/variable-incomes/index.html index 00bbf6e2f..05736ef41 100644 --- a/swagger-apis/variable-incomes/index.html +++ b/swagger-apis/variable-incomes/index.html @@ -45,8 +45,11 @@ window.onload = function() { // Begin Swagger UI call region const ui = SwaggerUIBundle({ - urls: [ {"name": "1.0.0-rc1.0", "url": "./1.0.0-rc1.0.yml"}], - "urls.primaryName": "1.0.0-rc1.0", // default spec + urls: [ {"name": "1.0.0-rc1.0", "url": "./1.0.0-rc1.0.yml"}, + {"name": "1.0.0-rc2.0", "url": "./1.0.0-rc2.0.yml"}, + {"name": "1.0.0-rc3.0", "url": "./1.0.0-rc3.0.yml"}, + {"name": "1.0.0", "url": "./1.0.0.yml"}], + "urls.primaryName": "1.0.0", // default spec dom_id: '#swagger-ui', deepLinking: true, supportedSubmitMethods:[],