openapi: 3.9.2 info: title: PCM-Openapi description: > # Introdução A Plataforma de Coleta de Métricas foi idealizada para contabilizar as interações entre as instituições participantes, de modo a promover um ambiente equitativo e não discriminatório. Se trata de uma Plataforma localizada no perímetro central, gerida pelo regulador do ecossistema. ## Motivação Para que o ecossistema do Open Finance Brasil seja saudável para instituições e clientes finais, fez-se necessária a criação de uma Plataforma que deverá concentrar dados sobre as chamadas que as instituições fazem umas às outras. Dessa forma, permite-se coletar informações visando criar métricas e indicadores a fim de se ter visibilidade sobre todo o ambiente. No intuito de manter a integridade e consistência nos dados, o envio destes pelas instituições deverá passar por um processo de conciliação. Quando divergente, as instituições serão notificadas e terão a possibilidade de ajustar os reportes, o que promove um ambiente saudável de autorregulação, prevenindo assim uma disputa. ## O que a Plataforma não é A Plataforma recebe os dados de maneira póstuma, ou seja, dentro do período de fechamento, mas após a chamada concreta ter sido feita. Dada essa natureza, a Plataforma não pode atuar como um agente que proíbe, bloqueia ou interfere nas interações entre as instituições. Por mais que concentre informações importantes das chamadas entre as instituições, a Plataforma não é uma ferramenta de BI, e o controle de acesso aos dados é feito em diferentes níveis (participante, regulador e administrador). ## Premissas Técnicas * Tanto o envio por parte dos participantes quanto o processamento por parte da Plataforma serão feitos de maneira assíncrona; ## Terminologia * **Server e Client**: em uma interação, a parte que solicita os dados é chamada de _client_, ao passo que a parte que devolve os dados é o _server_. O ponto de vista para o uso dessa terminologia é o tráfego dos dados da transação e não o ponto de partida da chamada. Portanto, supondo que A faça uma consulta em B pelos dados de uma conta, esses dados vão ser transmitidos por quem recebeu a solicitação, e recebidos por quem a fez, nesse caso, "A" é o Client e "B" é o Server. * **Reporte**: no contexto da API de Coleta de Métricas, um _reporte_ é o registro da chamada que será enviado tanto pelo server quanto pelo client. Esse registro será armazenado na Plataforma para posterior processo de conciliação de chamadas e extração de dados estatísticos. * **Divergência**: Quando Server e Client enviam reportes, cada um destes reportes se refere a uma chamada em específico. Nos casos em que uma das partes não envia o reporte sobre essa chamada em específico, é caracterizada uma divergência. As divergências podem ser resolvidas pela chamada às operações de modificação de reportes em suas respectivas APIs. Uma divergência é considerada fechada apenas quando todos os reportes encontram sua respectiva correspondência do outro lado da chamada. Para informações detalhadas sobre a PCM, consulte o [site da documentação da Plataforma](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/17378055/Plataforma+de+Coleta+de+M+tricas). version: 1.0.0 tags: - name: Private API - name: Hybrid Flow API - name: Opendata API - name: Consents API - name: Credit Portability API - name: Security API - name: Payment Status paths: /report-api/v1/private/report/: post: summary: Inclusão de reports deprecated: false description: > Inclusão de reportes na plataforma. Ao enviar um lote de reportes, a plataforma vai fazer o processo de validação de cada reporte de maneira síncrona e devolver o resultado dessa validação na resposta. O status HTTP de retorno será 200 caso **todos** dos reportes enviados forem aceitos. Caso pelo menos 1 reporte esteja inconsistente, o status de retorno será 207 - veja documentação de cada status de retorno para mais informações. Os dados inseridos na API de Reporte são sempre processados de maneira assíncrona, e sua persistência se utiliza de consistência posterior (eventual consistency), portanto, um registro tem um tempo de processamento em que ele não estará disponível para consulta até que ele seja persistido. O limite de reportes de cada envio de lote é de 5.000 entradas no array. operationId: add-reports tags: - Private API parameters: [] requestBody: content: application/json: schema: type: array maxItems: 5000 items: oneOf: - $ref: '#/components/schemas/ClientReportRequest' - $ref: '#/components/schemas/ServerReportRequest' example: - timestamp: '2021-11-11T18:08:08.894Z' fapiInteractionId: d78fc4e5-37ca-4da3-adf2-9b082bf92280 clientSSId: f0b5419b-2b5f-4f59-9862-6d2a8e23be26 clientOrgId: 082ff90b-9d65-46bb-b123-b88eb47fd61c serverOrgId: b8e34d5a-2ed5-451e-8ddb-45a1edc76243 endpoint: /open-banking/products-services/v1/business-financings statusCode: 200 httpMethod: GET correlationId: wNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf processTimespan: 120 endpointUriPrefix: https://ofin.bank.com/ role: CLIENT additionalInfo: personType: PF consentId: uri:bank:d1541b17-3175-477d-a52b-2813ae2c4c36 - timestamp: '2021-11-11T19:22:10.334Z' fapiInteractionId: 0786fce3-a36f-43f8-b66a-d26ab1dfc639 clientSSId: f0b5419b-2b5f-4f59-9862-6d2a8e23be26 clientOrgId: 082ff90b-9d65-46bb-b123-b88eb47fd61c serverOrgId: b8e34d5a-2ed5-451e-8ddb-45a1edc76243 endpoint: /open-banking/products-services/v1/business-financings statusCode: 200 httpMethod: GET correlationId: 8qPzRL4nBzesCc3H1827UlqqEuTT4F5lN82DuJllcnL5VnnY5j processTimespan: 117 endpointUriPrefix: https://ofin.bank.com/ role: CLIENT additionalInfo: personType: PF consentId: uri:bank:d1541b17-3175-477d-a52b-2813ae2c4c36 - timestamp: '2021-11-11T19:41:41.811Z' fapiInteractionId: d1541b17-3175-477d-a52b-2813ae2c4c36 clientOrgId: 082ff90b-9d65-46bb-b123-b88eb47fd61c serverOrgId: b8e34d5a-2ed5-451e-8ddb-45a1edc76243 endpoint: /open-banking/products-services/v1/business-financings statusCode: 200 httpMethod: GET processTimespan: 125 role: SERVER responses: '200': description: >- O status 200 representa a situação onde todos os registros enviados no lote foram validados e serão direcionados para processamento. Se pelo menos 1 registro contiver problemas de validação, o retorno será 207 (veja descrição do status). A operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição. content: application/json: schema: type: array maxItems: 5000 items: $ref: '#/components/schemas/ReportResponse' examples: '1': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: wNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf status: ACCEPTED '2': summary: Sucesso value: reportId: 4095388d-f44f-499a-a9a7-2dbffce1bb8a correlationId: 8qPzRL4nBzesCc3H1827UlqqEuTT4F5lN82DuJllcnL5VnnY5j status: ACCEPTED '3': summary: Sucesso value: reportId: 0f3fcceb-39f6-41b4-a75d-8444244bd836 status: ACCEPTED headers: {} '207': description: >- O status 207 (Multi-Status) informa ao solicitante que o formato da requisição está correto, mas que entradas do array contém erro de validação em pelo menos 1 item. Ou seja, se todos os elementos do array informado estiverem com falha de validação, a operação vai devolver o status 207, e no corpo da resposta todos os elementos do array vão estar com status DISCARDED e com sua respectiva mensagem. A operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição. content: application/json: schema: type: array maxItems: 5000 items: $ref: '#/components/schemas/ReportResponse' examples: '4': summary: Primeiro registro com falha value: - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: wNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf status: DISCARDED message: 'Missing fields: ''fapiInteractionId''' - reportId: 4095388d-f44f-499a-a9a7-2dbffce1bb8a correlationId: 8qPzRL4nBzesCc3H1827UlqqEuTT4F5lN82DuJllcnL5VnnY5j status: ACCEPTED - reportId: 0f3fcceb-39f6-41b4-a75d-8444244bd836 status: ACCEPTED '5': summary: Todos registros com falha value: - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: DISCARDED message: 'Missing fields: ''fapiInteractionId''' - reportId: 4095388d-f44f-499a-a9a7-2dbffce1bb8a status: DISCARDED message: 'Missing fields: ''fapiInteractionId''' - reportId: 0f3fcceb-39f6-41b4-a75d-8444244bd836 status: DISCARDED message: 'Missing fields: ''fapiInteractionId''' '6': summary: Campo obrigatório não enviado value: - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a, correlationId: wNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf, status: DISCARDED, message: 'Missing fields: ''statusCode''' headers: {} '400': description: O formato do corpo da requisição não é um array. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: 'Invalid payload format: MUST be an array' headers: {} '401': description: >- Ocorre quando uma requisição não é autorizada pelo gateway, e acontece quando o token não é enviado ou está inválido. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unauthorized headers: {} '403': description: >- Ocorre quando um cliente já previamente identificado (autenticado) não é autorizado a acessar um determinado recurso. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Forbidden headers: {} '406': description: >- Ocorre quando um cliente já previamente identificado (autenticado) não é autorizado a acessar um determinado recurso. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Content type not accepted headers: {} '413': description: '' content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Record limit exceeded headers: {} '415': description: '' content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unsupported Media Type headers: {} '429': description: '' content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Too Many Requests headers: {} '500': description: '' content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Internal Server Error headers: {} security: - bearer: [] /report-api/v1/private/report/{fapiInteractonId}: get: summary: Consulta um report em específico usando um identificador deprecated: false description: > Operação que permite a consulta de um reporte em específico mediante um identificador. A busca por reportes estará sempre no contexto do usuário representado pelo token de acesso, ou seja, o _participante_ só terá acesso a reportes em que instituição que ele pertence é parte, seja como client ou como server. O processamento do registro ocorre de maneira assíncrona, o que pode gerar um cenário de consistência eventual: caso a consulta seja feita imediatamente após a inclusão, é possível que o registro ainda não esteja disponível para consulta. operationId: report-by-id tags: - Private API parameters: - name: fapiInteractonId in: path description: '' required: true example: '' schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/ReportModel' headers: {} '401': description: '' content: application/json: schema: type: object properties: message: type: string required: - message example: message: Unauthorized headers: {} '403': description: '' content: application/json: schema: type: object properties: message: type: string required: - message example: message: Forbidden headers: {} '404': description: '' content: application/json: schema: type: object properties: message: type: string request_id: type: string required: - message - request_id example: message: Not found request_id: z1240cc1d73a39e13eb00fd62c5e1be11 headers: {} '406': description: '' content: application/json: schema: type: object properties: message: type: string required: - message example: message: Content type not accepted headers: {} '429': description: '' content: application/json: schema: type: object properties: message: type: string required: - message example: message: Too Many Requests headers: {} '500': description: '' content: application/json: schema: type: object properties: message: type: string required: - message example: message: Internal Server Error headers: {} security: - bearer: [] /report-api/v2/hybrid-flow/client/redirect-to-server: post: summary: >- Inclusão de report Hybrid Flow de redirecionamento para o servidor (papel client) deprecated: false description: > Inclusão do report de início de redirecionamento de um usuário do receptor/iniciador para a transmissora/detentora. Ao enviar um report, a Plataforma vai fazer o processo de validação de maneira síncrona e devolver o resultado dessa validação na resposta. O status HTTP de retorno será 200 caso o report enviado seja aceito. Caso seja obtido um status HTTP diferente, a integração deve ser corrigida. Observe no response body o detalhamento do erro e corrija a implementação. operationId: add-reports-client-redirect-to-server tags: - Hybrid Flow API parameters: [] requestBody: content: application/json: schema: $ref: >- #/components/schemas/HybridFlowClientRedirectToServerReportRequest responses: '200': description: "\t\nO status 200 representa a situação onde todos os registros enviados no lote foram validados e serão direcionados para processamento. Se pelo menos 1 registro contiver problemas de validação, o retorno será 207 (veja descrição do status).\n\nA operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição." content: application/json: schema: $ref: '#/components/schemas/ReportResponse' examples: '1': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '2': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '3': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED headers: {} '207': description: >- O status 207 (Multi-Status) informa ao solicitante que o formato da requisição está correto, mas que entradas do array contém erro de validação em pelo menos 1 item. Ou seja, se todos os elementos do array informado estiverem com falha de validação, a operação vai devolver o status 207, e no corpo da resposta todos os elementos do array vão estar com status DISCARDED e com sua respectiva mensagem. A operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição. content: application/json: schema: type: object properties: reportId: description: Identificator único interno do reporte no formato UUID v4. type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: 9a97c2df-b261-4fc2-aa66-d1b5168397da status: type: string description: >- Informa o status do registro de reporte. DISCARDED: O status DISCARDED indica que o reporte enviado pelo participante foi rejeitado pela PCM. O motivo do descarte será enviado com a resposta, podendo ser por conta de um reporte inválido ou por um erro no processamento. Não é possível modificar um reporte DISCARDED, portanto o reportador deverá corrigir o registro que apresentou erro e reenviar via POST. SINGLE: O status SINGLE indica que o reporte em questão não tem uma contraparte. Ele é utilizado em casos onde a conciliação entre dois reportes não é possível. ACCEPTED: O status ACCEPTED indica que a validação de formato do reporte não tem erros e este será enviado para processamento. UNPAIRED: O status UNPAIRED significa que o reporte atual não possui uma correspondência em outro reporte através do atributo fapiInteractionId. Indica um reporte divergente. PAIRED_INCONSISTENT: O status PAIRED_INCONSISTENT significa que o reporte corrente possui uma contraparte com o mesmo fapiInteractionId, mas os demais dados estão inconsistentes. Indica um reporte divergente. PAIRED: Indica que o reporte tem uma contraparte com o mesmo fapiInteractionId e os demais dados estão conciliados. Representa o estado final desejado em um fluxo correto. enum: - DISCARDED - SINGLE - ACCEPTED - UNPAIRED - PAIRED_INCONSISTENT - 'PAIRED ' example: ACCEPTED message: description: >- Caso a solicitação contenha algum problema em seu formato, ou caso haja algum tipo de falha detectável no momento da requisição, esse campo trará detalhes sobre o erro ocorrido. Informações adicionais sobre os tipos de erros podem ser encontradas em [https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM) type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,200}$ maxLength: 200 example: 'Missing fields: ''fapiInteractionId'', ''endpoint''' required: - reportId - status examples: '4': summary: Primeiro registro com falha value: - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '5': summary: Todos registros com falha value: - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) headers: {} '400': description: O formato do corpo da requisição não é um array. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Report Invalid headers: {} '401': description: >- Ocorre quando uma requisição não é autorizada pelo gateway, e acontece quando o token não é enviado ou está inválido. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unauthorized headers: {} '403': description: >- Ocorre quando um cliente já previamente identificado (autenticado) não é autorizado a acessar um determinado recurso. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Forbidden headers: {} '406': description: >- Ocorre quando um cliente espera uma resposta diferente de application/json usando o header Accept content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Content type not accepted headers: {} '415': description: >- Ocorre quando uma requisição envia um Content Type diferente de application/json content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unsupported Media Type headers: {} '429': description: >- Ocorre quando o servidor atinge o limite de requisições (atualmente, 300 req/s). content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Too Many Requests headers: {} '500': description: É devolvido quando ocorre um erro não identificado no servidor content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Internal Server Error headers: {} security: - bearer: [] /report-api/v2/hybrid-flow/server/redirect-target: post: summary: >- Inclusão de report Hybrid Flow de redirecionamento para o destino (papel server) deprecated: false description: > Inclusão de report de chegada de usuário em sistema da transmissora/dentendora para autenticação. Deve ser enviado antes da autenticação do usuário. Ao enviar um report, a Plataforma vai fazer o processo de validação de maneira síncrona e devolver o resultado dessa validação na resposta. O status HTTP de retorno será 200 caso o reporte enviado seja aceito. operationId: add-reports-server-redirect-target tags: - Hybrid Flow API parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/HybridFlowServerRedirectTargetReportRequest' responses: '200': description: "\t\nO status 200 representa a situação onde todos os registros enviados no lote foram validados e serão direcionados para processamento. Se pelo menos 1 registro contiver problemas de validação, o retorno será 207 (veja descrição do status).\n\nA operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição." content: application/json: schema: $ref: '#/components/schemas/HybridFlowReportResponse' examples: '1': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '2': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '3': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED headers: {} '207': description: >- O status 207 (Multi-Status) informa ao solicitante que o formato da requisição está correto, mas que entradas do array contém erro de validação em pelo menos 1 item. Ou seja, se todos os elementos do array informado estiverem com falha de validação, a operação vai devolver o status 207, e no corpo da resposta todos os elementos do array vão estar com status DISCARDED e com sua respectiva mensagem. A operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição. content: application/json: schema: type: object properties: reportId: description: Identificator único interno do reporte no formato UUID v4. type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: 9a97c2df-b261-4fc2-aa66-d1b5168397da status: type: string description: >- Informa o status do registro de reporte. DISCARDED: O status DISCARDED indica que o reporte enviado pelo participante foi rejeitado pela PCM. O motivo do descarte será enviado com a resposta, podendo ser por conta de um reporte inválido ou por um erro no processamento. Não é possível modificar um reporte DISCARDED, portanto o reportador deverá corrigir o registro que apresentou erro e reenviar via POST. ACCEPTED: O status ACCEPTED indica que a validação de formato do reporte não tem erros e este será enviado para processamento. enum: - DISCARDED - ACCEPTED example: ACCEPTED message: description: >- Caso a solicitação contenha algum problema em seu formato, ou caso haja algum tipo de falha detectável no momento da requisição, esse campo trará detalhes sobre o erro ocorrido. Informações adicionais sobre os tipos de erros podem ser encontradas em [https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM) type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,200}$ maxLength: 200 example: 'Missing fields: ''fapiInteractionId'', ''endpoint''' required: - reportId - status examples: '4': summary: Primeiro registro com falha value: - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '5': summary: Todos os registros com falha value: - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) headers: {} '400': description: O formato do corpo da requisição não é um array. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Report Invalid headers: {} '401': description: >- Ocorre quando uma requisição não é autorizada pelo gateway, e acontece quando o token não é enviado ou está inválido. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unauthorized headers: {} '403': description: >- Ocorre quando um cliente já previamente identificado (autenticado) não é autorizado a acessar um determinado recurso. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Forbidden headers: {} '406': description: >- Ocorre quando um cliente espera uma resposta diferente de application/json usando o header Accept content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Content type not accepted headers: {} '415': description: >- Ocorre quando uma requisição envia um Content Type diferente de application/json content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unsupported Media Type headers: {} '429': description: >- Ocorre quando o servidor atinge o limite de requisições (atualmente, 300 req/s). content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Too Many Requests headers: {} '500': description: É devolvido quando ocorre um erro não identificado no servidor content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Internal Server Error headers: {} security: - bearer: [] /report-api/v2/hybrid-flow/server/authenticated: post: summary: Inclusão de report Hybrid Flow de autenticação (papel server) deprecated: false description: > Inclusão de report de autenticação na plataforma que deverá ser enviado após o client se autenticar / entrar no app e antes de autorizar o consentimento. Ao enviar um report, a Plataforma vai fazer o processo de validação de maneira síncrona e devolver o resultado dessa validação na resposta. O status HTTP de retorno será 200 caso o reporte enviado seja aceito. operationId: add-reports-server-authenticated tags: - Hybrid Flow API parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/HybridFlowServerAuthenticatedRequest' responses: '200': description: "\t\nO status 200 representa a situação onde todos os registros enviados no lote foram validados e serão direcionados para processamento. Se pelo menos 1 registro contiver problemas de validação, o retorno será 207 (veja descrição do status).\n\nA operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição." content: application/json: schema: type: object properties: reportId: description: Identificator único interno do reporte no formato UUID v4. type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: 9a97c2df-b261-4fc2-aa66-d1b5168397da status: type: string description: >- Informa o status do registro de reporte. DISCARDED: O status DISCARDED indica que o reporte enviado pelo participante foi rejeitado pela PCM. O motivo do descarte será enviado com a resposta, podendo ser por conta de um reporte inválido ou por um erro no processamento. Não é possível modificar um reporte DISCARDED, portanto o reportador deverá corrigir o registro que apresentou erro e reenviar via POST. ACCEPTED: O status ACCEPTED indica que a validação de formato do reporte não tem erros e este será enviado para processamento. enum: - DISCARDED - ACCEPTED example: ACCEPTED message: description: >- Caso a solicitação contenha algum problema em seu formato, ou caso haja algum tipo de falha detectável no momento da requisição, esse campo trará detalhes sobre o erro ocorrido. Informações adicionais sobre os tipos de erros podem ser encontradas em [https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM) type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,200}$ maxLength: 200 example: 'Missing fields: ''fapiInteractionId'', ''endpoint''' required: - reportId - status examples: '1': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '2': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '3': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED headers: {} '207': description: >- O status 207 (Multi-Status) informa ao solicitante que o formato da requisição está correto, mas que entradas do array contém erro de validação em pelo menos 1 item. Ou seja, se todos os elementos do array informado estiverem com falha de validação, a operação vai devolver o status 207, e no corpo da resposta todos os elementos do array vão estar com status DISCARDED e com sua respectiva mensagem. A operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição. content: application/json: schema: type: object properties: reportId: description: Identificator único interno do reporte no formato UUID v4. type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: 9a97c2df-b261-4fc2-aa66-d1b5168397da status: type: string description: >- Informa o status do registro de reporte. DISCARDED: O status DISCARDED indica que o reporte enviado pelo participante foi rejeitado pela PCM. O motivo do descarte será enviado com a resposta, podendo ser por conta de um reporte inválido ou por um erro no processamento. Não é possível modificar um reporte DISCARDED, portanto o reportador deverá corrigir o registro que apresentou erro e reenviar via POST. ACCEPTED: O status ACCEPTED indica que a validação de formato do reporte não tem erros e este será enviado para processamento. enum: - DISCARDED - SINGLE - ACCEPTED - UNPAIRED - PAIRED_INCONSISTENT - 'PAIRED ' example: ACCEPTED message: description: >- Caso a solicitação contenha algum problema em seu formato, ou caso haja algum tipo de falha detectável no momento da requisição, esse campo trará detalhes sobre o erro ocorrido. Informações adicionais sobre os tipos de erros podem ser encontradas em [https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM) type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,200}$ maxLength: 200 example: 'Missing fields: ''fapiInteractionId'', ''endpoint''' required: - reportId - status examples: '4': summary: Primeiro registro com falha value: - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '5': summary: Todos os registros com falha value: - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) headers: {} '400': description: O formato do corpo da requisição não é um array. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Report Invalid headers: {} '401': description: >- Ocorre quando uma requisição não é autorizada pelo gateway, e acontece quando o token não é enviado ou está inválido. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unauthorized headers: {} '403': description: >- Ocorre quando um cliente já previamente identificado (autenticado) não é autorizado a acessar um determinado recurso. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Forbidden headers: {} '406': description: >- Ocorre quando um cliente espera uma resposta diferente de application/json usando o header Accept content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Content type not accepted headers: {} '415': description: >- Ocorre quando uma requisição envia um Content Type diferente de application/json content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unsupported Media Type headers: {} '429': description: >- Ocorre quando o servidor atinge o limite de requisições (atualmente, 300 req/s). content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Too Many Requests headers: {} '500': description: É devolvido quando ocorre um erro não identificado no servidor content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Internal Server Error headers: {} security: - bearer: [] /report-api/v2/hybrid-flow/server/redirect-to-client: post: summary: >- Inclusão de report Hybrid Flow de redirecionamento para o cliente (papel server) deprecated: false description: > Inclusão de report de redirecionamento do usuário de volta para receptora/iniciadora. Ao enviar um report, a Plataforma vai fazer o processo de validação de maneira síncrona e devolver o resultado dessa validação na resposta. O status HTTP de retorno será 200 caso o reporte enviado seja aceito. operationId: add-reports-server-redirect-to-client tags: - Hybrid Flow API parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/HybridFlowServerRedirectToClientRequest' responses: '200': description: "\t\nO status 200 representa a situação onde todos os registros enviados no lote foram validados e serão direcionados para processamento. Se pelo menos 1 registro contiver problemas de validação, o retorno será 207 (veja descrição do status).\n\nA operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição." content: application/json: schema: type: object properties: reportId: description: Identificator único interno do reporte no formato UUID v4. type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: 9a97c2df-b261-4fc2-aa66-d1b5168397da status: type: string description: >- Informa o status do registro de reporte. DISCARDED: O status DISCARDED indica que o reporte enviado pelo participante foi rejeitado pela PCM. O motivo do descarte será enviado com a resposta, podendo ser por conta de um reporte inválido ou por um erro no processamento. Não é possível modificar um reporte DISCARDED, portanto o reportador deverá corrigir o registro que apresentou erro e reenviar via POST. SINGLE: O status SINGLE indica que o reporte em questão não tem uma contraparte. Ele é utilizado em casos onde a conciliação entre dois reportes não é possível. ACCEPTED: O status ACCEPTED indica que a validação de formato do reporte não tem erros e este será enviado para processamento. UNPAIRED: O status UNPAIRED significa que o reporte atual não possui uma correspondência em outro reporte através do atributo fapiInteractionId. Indica um reporte divergente. PAIRED_INCONSISTENT: O status PAIRED_INCONSISTENT significa que o reporte corrente possui uma contraparte com o mesmo fapiInteractionId, mas os demais dados estão inconsistentes. Indica um reporte divergente. PAIRED: Indica que o reporte tem uma contraparte com o mesmo fapiInteractionId e os demais dados estão conciliados. Representa o estado final desejado em um fluxo correto. enum: - DISCARDED - ACCEPTED example: ACCEPTED message: description: >- Caso a solicitação contenha algum problema em seu formato, ou caso haja algum tipo de falha detectável no momento da requisição, esse campo trará detalhes sobre o erro ocorrido. Informações adicionais sobre os tipos de erros podem ser encontradas em [https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM) type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,200}$ maxLength: 200 example: 'Missing fields: ''fapiInteractionId'', ''endpoint''' required: - reportId - status examples: '1': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '2': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '3': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED headers: {} '207': description: >- O status 207 (Multi-Status) informa ao solicitante que o formato da requisição está correto, mas que entradas do array contém erro de validação em pelo menos 1 item. Ou seja, se todos os elementos do array informado estiverem com falha de validação, a operação vai devolver o status 207, e no corpo da resposta todos os elementos do array vão estar com status DISCARDED e com sua respectiva mensagem. A operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição. content: application/json: schema: type: object properties: reportId: description: Identificator único interno do reporte no formato UUID v4. type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: 9a97c2df-b261-4fc2-aa66-d1b5168397da status: type: string description: >- Informa o status do registro de reporte. DISCARDED: O status DISCARDED indica que o reporte enviado pelo participante foi rejeitado pela PCM. O motivo do descarte será enviado com a resposta, podendo ser por conta de um reporte inválido ou por um erro no processamento. Não é possível modificar um reporte DISCARDED, portanto o reportador deverá corrigir o registro que apresentou erro e reenviar via POST. ACCEPTED: O status ACCEPTED indica que a validação de formato do reporte não tem erros e este será enviado para processamento. enum: - DISCARDED - ACCEPTED example: ACCEPTED message: description: >- Caso a solicitação contenha algum problema em seu formato, ou caso haja algum tipo de falha detectável no momento da requisição, esse campo trará detalhes sobre o erro ocorrido. Informações adicionais sobre os tipos de erros podem ser encontradas em [https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM) type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,200}$ maxLength: 200 example: 'Missing fields: ''fapiInteractionId'', ''endpoint''' required: - reportId - status examples: '4': summary: Primeiro registro com falha value: - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '5': summary: Todos os registros com falha value: - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) headers: {} '400': description: O formato do corpo da requisição não é um array. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Report Invalid headers: {} '401': description: >- Ocorre quando uma requisição não é autorizada pelo gateway, e acontece quando o token não é enviado ou está inválido. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unauthorized headers: {} '403': description: >- Ocorre quando um cliente já previamente identificado (autenticado) não é autorizado a acessar um determinado recurso. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Forbidden headers: {} '406': description: >- Ocorre quando um cliente espera uma resposta diferente de application/json usando o header Accept content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Content type not accepted headers: {} '415': description: >- Ocorre quando uma requisição envia um Content Type diferente de application/json content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unsupported Media Type headers: {} '429': description: >- Ocorre quando o servidor atinge o limite de requisições (atualmente, 300 req/s). content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Too Many Requests headers: {} '500': description: É devolvido quando ocorre um erro não identificado no servidor content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Internal Server Error headers: {} security: - bearer: [] /report-api/v2/hybrid-flow/client/redirect-target-with-errors: post: summary: >- Inclusão de report Hybrid Flow de redirecionamento com erro para o destino (papel client) deprecated: false description: > Inclusão do report de retorno do usuário pelo Hybrid Flow contendo o código de erro. Ao enviar um report, a Plataforma vai fazer o processo de validação de maneira síncrona e devolver o resultado dessa validação na resposta. O status HTTP de retorno será 200 caso o reporte enviado seja aceito. operationId: add-reports-redirect-with-errors tags: - Hybrid Flow API parameters: [] requestBody: content: application/json: schema: $ref: >- #/components/schemas/HybridFlowServerRedirectTargetWithErrorsRequest responses: '200': description: "\t\nO status 200 representa a situação onde todos os registros enviados no lote foram validados e serão direcionados para processamento. Se pelo menos 1 registro contiver problemas de validação, o retorno será 207 (veja descrição do status).\n\nA operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição." content: application/json: schema: type: object properties: reportId: description: Identificator único interno do reporte no formato UUID v4. type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: 9a97c2df-b261-4fc2-aa66-d1b5168397da status: type: string description: >- Informa o status do registro de reporte. DISCARDED: O status DISCARDED indica que o reporte enviado pelo participante foi rejeitado pela PCM. O motivo do descarte será enviado com a resposta, podendo ser por conta de um reporte inválido ou por um erro no processamento. Não é possível modificar um reporte DISCARDED, portanto o reportador deverá corrigir o registro que apresentou erro e reenviar via POST. SINGLE: O status SINGLE indica que o reporte em questão não tem uma contraparte. Ele é utilizado em casos onde a conciliação entre dois reportes não é possível. ACCEPTED: O status ACCEPTED indica que a validação de formato do reporte não tem erros e este será enviado para processamento. UNPAIRED: O status UNPAIRED significa que o reporte atual não possui uma correspondência em outro reporte através do atributo fapiInteractionId. Indica um reporte divergente. PAIRED_INCONSISTENT: O status PAIRED_INCONSISTENT significa que o reporte corrente possui uma contraparte com o mesmo fapiInteractionId, mas os demais dados estão inconsistentes. Indica um reporte divergente. PAIRED: Indica que o reporte tem uma contraparte com o mesmo fapiInteractionId e os demais dados estão conciliados. Representa o estado final desejado em um fluxo correto. enum: - DISCARDED - ACCEPTED example: ACCEPTED message: description: >- Caso a solicitação contenha algum problema em seu formato, ou caso haja algum tipo de falha detectável no momento da requisição, esse campo trará detalhes sobre o erro ocorrido. Informações adicionais sobre os tipos de erros podem ser encontradas em [https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM) type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,200}$ maxLength: 200 example: 'Missing fields: ''fapiInteractionId'', ''endpoint''' required: - reportId - status examples: '1': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '2': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '3': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED headers: {} '207': description: >- O status 207 (Multi-Status) informa ao solicitante que o formato da requisição está correto, mas que entradas do array contém erro de validação em pelo menos 1 item. Ou seja, se todos os elementos do array informado estiverem com falha de validação, a operação vai devolver o status 207, e no corpo da resposta todos os elementos do array vão estar com status DISCARDED e com sua respectiva mensagem. A operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição. content: application/json: schema: type: object properties: reportId: description: Identificator único interno do reporte no formato UUID v4. type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: 9a97c2df-b261-4fc2-aa66-d1b5168397da status: type: string description: >- Informa o status do registro de reporte. DISCARDED: O status DISCARDED indica que o reporte enviado pelo participante foi rejeitado pela PCM. O motivo do descarte será enviado com a resposta, podendo ser por conta de um reporte inválido ou por um erro no processamento. Não é possível modificar um reporte DISCARDED, portanto o reportador deverá corrigir o registro que apresentou erro e reenviar via POST. ACCEPTED: O status ACCEPTED indica que a validação de formato do reporte não tem erros e este será enviado para processamento. enum: - DISCARDED - ACCEPTED example: ACCEPTED message: description: >- Caso a solicitação contenha algum problema em seu formato, ou caso haja algum tipo de falha detectável no momento da requisição, esse campo trará detalhes sobre o erro ocorrido. Informações adicionais sobre os tipos de erros podem ser encontradas em [https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM) type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,200}$ maxLength: 200 example: 'Missing fields: ''fapiInteractionId'', ''endpoint''' required: - reportId - status examples: '4': summary: Primeiro registro com falha value: - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '5': summary: Todos os registros com falha value: - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) headers: {} '400': description: O formato do corpo da requisição não é um array. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Report Invalid headers: {} '401': description: >- Ocorre quando uma requisição não é autorizada pelo gateway, e acontece quando o token não é enviado ou está inválido. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unauthorized headers: {} '403': description: >- Ocorre quando um cliente já previamente identificado (autenticado) não é autorizado a acessar um determinado recurso. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Forbidden headers: {} '406': description: >- Ocorre quando um cliente espera uma resposta diferente de application/json usando o header Accept content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Content type not accepted headers: {} '415': description: >- Ocorre quando uma requisição envia um Content Type diferente de application/json content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unsupported Media Type headers: {} '429': description: >- Ocorre quando o servidor atinge o limite de requisições (atualmente, 300 req/s). content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Too Many Requests headers: {} '500': description: É devolvido quando ocorre um erro não identificado no servidor content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Internal Server Error headers: {} security: - bearer: [] /report-api/v2/hybrid-flow/client/redirect-target-without-errors: post: summary: >- Inclusão de report Hybrid Flow de redirecionamento sem erro para o destino (papel client) deprecated: false description: > Inclusão de report de retorno de usuário pelo Hybrid Flow com sucesso. Ao enviar um report, a Plataforma vai fazer o processo de validação de maneira síncrona e devolver o resultado dessa validação na resposta. O status HTTP de retorno será 200 caso o reporte enviado seja aceito. operationId: add-reports-redirect-without-errors tags: - Hybrid Flow API parameters: [] requestBody: content: application/json: schema: $ref: >- #/components/schemas/HybridFlowServerRedirectTargetWithoutErrorsRequest responses: '200': description: "\t\nO status 200 representa a situação onde todos os registros enviados no lote foram validados e serão direcionados para processamento. Se pelo menos 1 registro contiver problemas de validação, o retorno será 207 (veja descrição do status).\n\nA operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição." content: application/json: schema: type: object properties: reportId: description: Identificator único interno do reporte no formato UUID v4. type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: 9a97c2df-b261-4fc2-aa66-d1b5168397da status: type: string description: >- Informa o status do registro de reporte. DISCARDED: O status DISCARDED indica que o reporte enviado pelo participante foi rejeitado pela PCM. O motivo do descarte será enviado com a resposta, podendo ser por conta de um reporte inválido ou por um erro no processamento. Não é possível modificar um reporte DISCARDED, portanto o reportador deverá corrigir o registro que apresentou erro e reenviar via POST. ACCEPTED: O status ACCEPTED indica que a validação de formato do reporte não tem erros e este será enviado para processamento. enum: - DISCARDED - ACCEPTED example: ACCEPTED message: description: >- Caso a solicitação contenha algum problema em seu formato, ou caso haja algum tipo de falha detectável no momento da requisição, esse campo trará detalhes sobre o erro ocorrido. Informações adicionais sobre os tipos de erros podem ser encontradas em [https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM) type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,200}$ maxLength: 200 example: 'Missing fields: ''fapiInteractionId'', ''endpoint''' required: - reportId - status examples: '1': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '2': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '3': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED headers: {} '207': description: >- O status 207 (Multi-Status) informa ao solicitante que o formato da requisição está correto, mas que entradas do array contém erro de validação em pelo menos 1 item. Ou seja, se todos os elementos do array informado estiverem com falha de validação, a operação vai devolver o status 207, e no corpo da resposta todos os elementos do array vão estar com status DISCARDED e com sua respectiva mensagem. A operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição. content: application/json: schema: type: object properties: reportId: description: Identificator único interno do reporte no formato UUID v4. type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: 9a97c2df-b261-4fc2-aa66-d1b5168397da status: type: string description: >- Informa o status do registro de reporte. DISCARDED: O status DISCARDED indica que o reporte enviado pelo participante foi rejeitado pela PCM. O motivo do descarte será enviado com a resposta, podendo ser por conta de um reporte inválido ou por um erro no processamento. Não é possível modificar um reporte DISCARDED, portanto o reportador deverá corrigir o registro que apresentou erro e reenviar via POST. ACCEPTED: O status ACCEPTED indica que a validação de formato do reporte não tem erros e este será enviado para processamento. enum: - DISCARDED - ACCEPTED example: ACCEPTED message: description: >- Caso a solicitação contenha algum problema em seu formato, ou caso haja algum tipo de falha detectável no momento da requisição, esse campo trará detalhes sobre o erro ocorrido. Informações adicionais sobre os tipos de erros podem ser encontradas em [https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM) type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,200}$ maxLength: 200 example: 'Missing fields: ''fapiInteractionId'', ''endpoint''' required: - reportId - status examples: '4': summary: Primeiro registro com falha value: - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '5': summary: Todos os registros com falha value: - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) - reportId: d73b3296-29fb-463a-b6ea-0a8844d5557f status: DISCARDED message: >- invalid format: consentId: String must contain at least 1 character(s) headers: {} '400': description: O formato do corpo da requisição não é um array. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Report Invalid headers: {} '401': description: >- Ocorre quando uma requisição não é autorizada pelo gateway, e acontece quando o token não é enviado ou está inválido. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unauthorized headers: {} '403': description: >- Ocorre quando um cliente já previamente identificado (autenticado) não é autorizado a acessar um determinado recurso. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Forbidden headers: {} '406': description: >- Ocorre quando um cliente espera uma resposta diferente de application/json usando o header Accept content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Content type not accepted headers: {} '415': description: >- Ocorre quando uma requisição envia um Content Type diferente de application/json content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unsupported Media Type headers: {} '429': description: >- Ocorre quando o servidor atinge o limite de requisições (atualmente, 300 req/s). content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Too Many Requests headers: {} '500': description: É devolvido quando ocorre um erro não identificado no servidor content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Internal Server Error headers: {} security: - bearer: [] /report-api/v1/opendata/report: post: summary: Inclusão de reports deprecated: false description: > Inclusão de reportes de dados abertos na plataforma. Ao enviar um lote de reportes, a plataforma vai fazer o processo de validação sintática de cada reporte de maneira síncrona e devolver o resultado dessa validação na resposta. O status HTTP de retorno será 200 caso **todos** dos reportes enviados forem aceitos. Caso pelo menos 1 reporte esteja inconsistente, o status de retorno será 207 - veja documentação de cada status de retorno para mais informações. Os dados inseridos na API de Reporte são sempre processados de maneira assíncrona, e sua persistência se utiliza de consistência posterior (eventual consistency), portanto, um registro tem um tempo de processamento em que ele não estará disponível para consulta até que ele seja persistido. O limite de registros de cada lote é de 5.000 registros. operationId: add-opendata-reports tags: - Opendata API parameters: [] requestBody: content: application/json: schema: type: array items: $ref: '#/components/schemas/OpendataReportRequest' examples: Request Valido: value: - endpoint: /open-banking/channels/v1/electronic-channels statusCode: 200 httpMethod: GET timestamp: '2021-11-11T18:08:08.421Z' processTimespan: 120 additionalInfo: clientIp: 192.168.10.11 - endpoint: /open-banking/channels/v1/electronic-channels statusCode: 200 httpMethod: GET timestamp: '2021-11-11T18:08:08.421Z' processTimespan: 120 additionalInfo: clientIp: 192.168.10.11 summary: Request Valido description: O request apresentado tem todos os campos validados. responses: '200': description: "\t\nO status 200 representa a situação onde todos os registros enviados no lote foram validados e serão direcionados para processamento. Se pelo menos 1 registro contiver problemas de validação, o retorno será 207 (veja descrição do status).\n\nA operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição." content: application/json: schema: type: array maxItems: 5000 items: $ref: '#/components/schemas/ReportResponse' examples: '1': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '2': summary: Sucesso value: reportId: 4095388d-f44f-499a-a9a7-2dbffce1bb8a status: ACCEPTED headers: {} '207': description: >- O status 207 (Multi-Status) informa ao solicitante que o formato da requisição está correto, mas que entradas do array contém erro de validação em pelo menos 1 item. Ou seja, se todos os elementos do array informado estiverem com falha de validação, a operação vai devolver o status 207, e no corpo da resposta todos os elementos do array vão estar com status DISCARDED e com sua respectiva mensagem. A operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição. content: application/json: schema: type: array maxItems: 5000 items: $ref: '#/components/schemas/ReportResponse' examples: '3': summary: Primeiro registro com falha value: - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: DISCARDED message: 'Missing fields: ''uri''' - reportId: 4095388d-f44f-499a-a9a7-2dbffce1bb8a status: ACCEPTED - reportId: 0f3fcceb-39f6-41b4-a75d-8444244bd836 status: ACCEPTED '4': summary: Todos registros com falha value: - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: DISCARDED message: 'Missing fields: ''uri''' - reportId: 4095388d-f44f-499a-a9a7-2dbffce1bb8a status: DISCARDED message: 'Missing fields: ''additionalInfo''' - reportId: 0f3fcceb-39f6-41b4-a75d-8444244bd836 status: DISCARDED message: 'Missing fields: ''httpMethod''' headers: {} '400': description: O formato do corpo da requisição não é um array. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: 'Invalid payload format: MUST be an array' headers: {} '401': description: >- Ocorre quando uma requisição não é autorizada pelo gateway, e acontece quando o token não é enviado ou está inválido. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unauthorized headers: {} '403': description: >- Ocorre quando um cliente já previamente identificado (autenticado) não é autorizado a acessar um determinado recurso. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Forbidden headers: {} '406': description: >- Ocorre quando um cliente espera uma resposta diferente de application/json usando o header Accept content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Content type not accepted headers: {} '413': description: '' content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Record limit exceeded headers: {} '415': description: >- Ocorre quando uma requisição envia um Content Type diferente de application/json content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unsupported Media Type headers: {} '429': description: >- Ocorre quando o servidor atinge o limite de requisições (atualmente, 300 req/s). content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Too Many Requests headers: {} '500': description: É devolvido quando ocorre um erro não identificado no servidor content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Internal Server Error headers: {} security: - bearer: [] /report-api/v1/consents/stock: post: summary: Inclusão de report de consent stock deprecated: false description: >- A API Consents recebe o estoque de consentimento fornecido pelas organizações através de autorreporte diário, com endpoint único para os papéis Client e Server. operationId: add-consents tags: - Consents API parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/ConsentsStockRequest' examples: Request Valido: value: date: '2021-11-11' orgId: c1ca8e62-9d6f-4ea3-84f2-d66bc0a8f7dc role: CLIENT scope: DADOS totalCustomerPF: 100 totalCustomerPJ: 85 consentsStockList: - clientOrgId: d78fc4e5-37ca-4da3-adf2-9b082bf92280 serverOrgId: c1ca8e62-9d6f-4ea3-84f2-d66bc0a8f7dc totalActiveConsents: 70 - clientOrgId: d78fc4e5-37ca-4da3-adf2-9b082bf92280 serverOrgId: c1ca8e62-9d6f-4ea3-84f2-d66bc0a8f7dc totalActiveConsents: 70 - clientOrgId: d78fc4e5-37ca-4da3-adf2-9b082bf92280 serverOrgId: c1ca8e62-9d6f-4ea3-84f2-d66bc0a8f7dc totalActiveConsents: 70 summary: Request Valido description: O request apresentado tem todos os campos validados. responses: '200': description: "\t\nO status 200 representa a situação onde todos os registros enviados no lote foram validados e serão direcionados para processamento. Se pelo menos 1 registro contiver problemas de validação, o retorno será 207 (veja descrição do status).\n\nA operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição." content: application/json: schema: $ref: '#/components/schemas/ConsentStockResponse' example: reportId: 9a97c2df-b261-4fc2-aa66-d1b5168397da status: ACCEPTED headers: {} '400': description: O formato do corpo da requisição não é um objeto. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: 'Invalid payload format: MUST be an array' headers: {} '401': description: >- Ocorre quando uma requisição não é autorizada pelo gateway, e acontece quando o token não é enviado ou está inválido. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unauthorized headers: {} '403': description: >- Ocorre quando um cliente já previamente identificado (autenticado) não é autorizado a acessar um determinado recurso. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Forbidden headers: {} '406': description: >- Ocorre quando um cliente espera uma resposta diferente de application/json usando o header Accept content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Content type not accepted headers: {} '413': description: '' content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Record limit exceeded headers: {} '415': description: >- Ocorre quando uma requisição envia um Content Type diferente de application/json content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unsupported Media Type headers: {} '429': description: >- Ocorre quando o servidor atinge o limite de requisições (atualmente, 300 req/s). content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Too Many Requests headers: {} '500': description: É devolvido quando ocorre um erro não identificado no servidor content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Internal Server Error headers: {} security: - bearer: [] /report-api/v1/credit-portabilities/client: post: summary: Inclusão de reports de credit portability para client deprecated: false description: >- A API de Portabilidade de Crédito fornece operações que permitem a inclusão de reportes relativos ao processo de solicitação de Portabilidade de Crédito entre instituições do ecossistema do Open Finance. tags: - Credit Portability API parameters: [] requestBody: content: application/json: schema: type: array items: $ref: '#/components/schemas/CreditPortabilityClientRequest' example: - timestamp: '2021-11-11T18:08:08.278Z' fapiInteractionId: d78fc4e5-37ca-4da3-adf2-9b082bf92280 clientSSId: ca0d518b-0e95-42d4-9fc8-0598ff9023af clientOrgId: e6e7c657-4d6d-46d9-a78b-76cc02495cf5 serverOrgId: c3779651-c918-48b1-b1fb-e36ba76cb036 endpoint: /credit-operations/{contractId}/portability-eligibility statusCode: 200 httpMethod: POST correlationId: uGQHwNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf2 processTimespan: 120 endpointUriPrefix: https://openbanking.instituicao-1.com.br/opbk role: CLIENT portabilityId: 54d5348c-1a3f-4ff4-a8a8-d0724fb806c6 creationDateTime: '2020-07-21T08:30:00Z' productSubTypeCategory: CREDITO_PESSOAL_CLEAN originalContractCET: '0.290000' originalPropositionCET: '0.290000' originalContractTerm: 57 propositionTerm: 30 creditPortabilityStatus: PENDING statusUpdateDateTime: '2020-07-21T08:30:00Z' rejectionReason: CANCELADO_PELO_CLIENTE rejectedBy: PROPONENTE - timestamp: '2021-11-11T18:08:08.278Z' fapiInteractionId: d78fc4e5-37ca-4da3-adf2-9b082bf92280 clientSSId: ca0d518b-0e95-42d4-9fc8-0598ff9023af clientOrgId: e6e7c657-4d6d-46d9-a78b-76cc02495cf5 serverOrgId: c3779651-c918-48b1-b1fb-e36ba76cb036 endpoint: /credit-operations/{contractId}/portability-eligibility statusCode: 200 httpMethod: POST correlationId: uGQHwNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf2 processTimespan: 120 endpointUriPrefix: https://openbanking.instituicao-1.com.br/opbk role: CLIENT portabilityId: 54d5348c-1a3f-4ff4-a8a8-d0724fb806c6 creationDateTime: '2020-07-21T08:30:00Z' productSubTypeCategory: CREDITO_PESSOAL_CLEAN originalContractCET: '0.290000' originalPropositionCET: '0.290000' originalContractTerm: 57 propositionTerm: 30 creditPortabilityStatus: PENDING statusUpdateDateTime: '2020-07-21T08:30:00Z' rejectionReason: CANCELADO_PELO_CLIENTE rejectedBy: PROPONENTE - timestamp: '2021-11-11T18:08:08.278Z' fapiInteractionId: d78fc4e5-37ca-4da3-adf2-9b082bf92280 clientSSId: ca0d518b-0e95-42d4-9fc8-0598ff9023af clientOrgId: e6e7c657-4d6d-46d9-a78b-76cc02495cf5 serverOrgId: c3779651-c918-48b1-b1fb-e36ba76cb036 endpoint: /credit-operations/{contractId}/portability-eligibility statusCode: 200 httpMethod: POST correlationId: uGQHwNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf2 processTimespan: 120 endpointUriPrefix: https://openbanking.instituicao-1.com.br/opbk role: CLIENT portabilityId: 54d5348c-1a3f-4ff4-a8a8-d0724fb806c6 creationDateTime: '2020-07-21T08:30:00Z' productSubTypeCategory: CREDITO_PESSOAL_CLEAN originalContractCET: '0.290000' originalPropositionCET: '0.290000' originalContractTerm: 57 propositionTerm: 30 creditPortabilityStatus: PENDING statusUpdateDateTime: '2020-07-21T08:30:00Z' rejectionReason: CANCELADO_PELO_CLIENTE rejectedBy: PROPONENTE - timestamp: '2021-11-11T18:08:08.278Z' fapiInteractionId: d78fc4e5-37ca-4da3-adf2-9b082bf92280 clientSSId: ca0d518b-0e95-42d4-9fc8-0598ff9023af clientOrgId: e6e7c657-4d6d-46d9-a78b-76cc02495cf5 serverOrgId: c3779651-c918-48b1-b1fb-e36ba76cb036 endpoint: /credit-operations/{contractId}/portability-eligibility statusCode: 200 httpMethod: POST correlationId: uGQHwNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf2 processTimespan: 120 endpointUriPrefix: https://openbanking.instituicao-1.com.br/opbk role: CLIENT portabilityId: 54d5348c-1a3f-4ff4-a8a8-d0724fb806c6 creationDateTime: '2020-07-21T08:30:00Z' productSubTypeCategory: CREDITO_PESSOAL_CLEAN originalContractCET: '0.290000' originalPropositionCET: '0.290000' originalContractTerm: 57 propositionTerm: 30 creditPortabilityStatus: PENDING statusUpdateDateTime: '2020-07-21T08:30:00Z' rejectionReason: CANCELADO_PELO_CLIENTE rejectedBy: PROPONENTE responses: '200': description: "\t\nO status 200 representa a situação onde todos os registros enviados no lote foram validados e serão direcionados para processamento. Se pelo menos 1 registro contiver problemas de validação, o retorno será 207 (veja descrição do status).\n\nA operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição." content: application/json: schema: type: array items: $ref: '#/components/schemas/ReportResponse' examples: '1': summary: Todos processados value: - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '2': summary: Todos os registros com falha value: - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: wNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf status: DISCARDED message: 'Missing fields: ''fapiInteractionId''' - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4b correlationId: wNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf status: DISCARDED message: 'Missing fields: ''fapiInteractionId''' - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4c correlationId: wNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf status: DISCARDED message: 'Missing fields: ''fapiInteractionId''' '3': summary: Campo obrigatório não enviado value: - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a, correlationId: wNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf, status: DISCARDED, message: 'Missing fields: ''statusCode''' headers: {} '207': description: >- O status 207 (Multi-Status) informa ao solicitante que o formato da requisição está correto, mas que entradas do array contém erro de validação em pelo menos 1 item. Ou seja, se todos os elementos do array informado estiverem com falha de validação, a operação vai devolver o status 207, e no corpo da resposta todos os elementos do array vão estar com status DISCARDED e com sua respectiva mensagem. A operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição. content: application/json: schema: type: array items: $ref: '#/components/schemas/ReportResponse' examples: '4': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: DISCARDED message: fapiInteractionId must be a UUID '5': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '6': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED headers: {} '400': description: O formato do corpo da requisição não é um array. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: 'Invalid payload format: MUST be an array' headers: {} '401': description: >- Ocorre quando uma requisição não é autorizada pelo gateway, e acontece quando o token não é enviado ou está inválido. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unauthorized headers: {} '403': description: >- Ocorre quando um cliente já previamente identificado (autenticado) não é autorizado a acessar um determinado recurso. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Forbidden headers: {} '406': description: >- Ocorre quando um cliente espera uma resposta diferente de application/json usando o header Accept content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Content type not accepted headers: {} '413': description: '' content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Record limit exceeded headers: {} '415': description: >- Ocorre quando uma requisição envia um Content Type diferente de application/json content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unsupported Media Type headers: {} '429': description: >- Ocorre quando o servidor atinge o limite de requisições (atualmente, 300 req/s). content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Too Many Requests headers: {} '500': description: É devolvido quando ocorre um erro não identificado no servidor content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Internal Server Error headers: {} security: - bearer: [] /report-api/v1/credit-portabilities/server: post: summary: Inclusão de reports de credit portability para server deprecated: false description: >- A API de Portabilidade de Crédito fornece operações que permitem a inclusão de reportes relativos ao processo de solicitação de Portabilidade de Crédito entre instituições do ecossistema do Open Finance. operationId: add-credit-portability-server tags: - Credit Portability API parameters: [] requestBody: content: application/json: schema: type: array items: $ref: '#/components/schemas/CreditPortabilityServerRequest' examples: Request Valido: value: - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a fapiInteractionId: d78fc4e5-37ca-4da3-adf2-9b082bf92280 endpoint: /credit-operations/{contractId}/portability-eligibility httpMethod: POST statusCode: 200 timestamp: '2021-11-11T18:08:08.894Z' processTimespan: 120 clientOrgId: c3779651-c918-48b1-b1fb-e36ba76cb036 serverOrgId: 5ec47c83-9010-4540-91ad-b820ef0df04a role: SERVER status: PENDING statusUpdateDateTime: '2020-07-21T08:30:00Z' rejectionReason: CANCELED rejectedBy: CREDORA - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a fapiInteractionId: d78fc4e5-37ca-4da3-adf2-9b082bf92280 endpoint: /credit-operations/{contractId}/portability-eligibility httpMethod: POST statusCode: 200 timestamp: '2021-11-11T18:08:08.894Z' processTimespan: 120 clientOrgId: c3779651-c918-48b1-b1fb-e36ba76cb036 serverOrgId: 5ec47c83-9010-4540-91ad-b820ef0df04a role: SERVER status: PENDING statusUpdateDateTime: '2020-07-21T08:30:00Z' rejectionReason: CANCELED rejectedBy: CREDORA - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a fapiInteractionId: d78fc4e5-37ca-4da3-adf2-9b082bf92280 endpoint: /credit-operations/{contractId}/portability-eligibility httpMethod: POST statusCode: 200 timestamp: '2021-11-11T18:08:08.894Z' processTimespan: 120 clientOrgId: c3779651-c918-48b1-b1fb-e36ba76cb036 serverOrgId: 5ec47c83-9010-4540-91ad-b820ef0df04a role: SERVER status: PENDING statusUpdateDateTime: '2020-07-21T08:30:00Z' rejectionReason: CANCELED rejectedBy: CREDORA summary: Request Valido description: O request apresentado tem todos os campos validados. responses: '200': description: "\t\nO status 200 representa a situação onde todos os registros enviados no lote foram validados e serão direcionados para processamento. Se pelo menos 1 registro contiver problemas de validação, o retorno será 207 (veja descrição do status).\n\nA operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição." content: application/json: schema: type: array items: $ref: '#/components/schemas/ReportResponse' examples: '1': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '2': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '3': summary: Sucesso value: reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED headers: {} '207': description: >- O status 207 (Multi-Status) informa ao solicitante que o formato da requisição está correto, mas que entradas do array contém erro de validação em pelo menos 1 item. Ou seja, se todos os elementos do array informado estiverem com falha de validação, a operação vai devolver o status 207, e no corpo da resposta todos os elementos do array vão estar com status DISCARDED e com sua respectiva mensagem. A operação vai devolver um array com todos os resultados, e garante que ele esteja na mesma ordem do array da requisição. content: application/json: schema: type: array items: $ref: '#/components/schemas/ReportResponse' examples: '4': summary: Primeiro registro com falha value: - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: DISCARDED message: fapiInteractionId must be a UUID - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a correlationId: 424ad55c-36cc-4077-b85e-c22ea984cc4a status: ACCEPTED '5': summary: Todos os registros com falha value: "[\r\n {\r\n \"reportId\": \"424ad55c-36cc-4077-b85e-c22ea984cc4a\",\r\n \"correlationId\": \"wNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf\",\r\n \"status\": \"DISCARDED\",\r\n \"message\": \"Missing fields: 'fapiInteractionId'\"\r\n },\r\n {\r\n \"reportId\": \"424ad55c-36cc-4077-b85e-c22ea984cc4b\",\r\n \"correlationId\": \"wNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf\",\r\n \"status\": \"DISCARDED\",\r\n \"message\": \"Missing fields: 'fapiInteractionId'\"\r\n },\r\n {\r\n \"reportId\": \"424ad55c-36cc-4077-b85e-c22ea984cc4c\",\r\n \"correlationId\": \"wNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf\",\r\n \"status\": \"DISCARDED\",\r\n \"message\": \"Missing fields: 'fapiInteractionId'\"\r\n },\r\n]" '6': summary: Campo obrigatório não enviado value: - reportId: 424ad55c-36cc-4077-b85e-c22ea984cc4a, correlationId: wNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf, status: DISCARDED, message: 'Missing fields: ''statusCode''' headers: {} '400': description: O formato do corpo da requisição não é um array. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: 'Invalid payload format: MUST be an array' headers: {} '401': description: >- Ocorre quando uma requisição não é autorizada pelo gateway, e acontece quando o token não é enviado ou está inválido. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unauthorized headers: {} '403': description: >- Ocorre quando um cliente já previamente identificado (autenticado) não é autorizado a acessar um determinado recurso. content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Forbidden headers: {} '406': description: >- Ocorre quando um cliente espera uma resposta diferente de application/json usando o header Accept content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Content type not accepted headers: {} '413': description: '' content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Record limit exceeded headers: {} '415': description: >- Ocorre quando uma requisição envia um Content Type diferente de application/json content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Unsupported Media Type headers: {} '429': description: >- Ocorre quando o servidor atinge o limite de requisições (atualmente, 300 req/s). content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Too Many Requests headers: {} '500': description: É devolvido quando ocorre um erro não identificado no servidor content: application/json: schema: $ref: '#/components/schemas/GenericError' example: message: Internal Server Error headers: {} security: - bearer: [] /report-api/v1/credit-portabilities/d78fc4e5-37ca-4da3-adf2-9b082bf92285: get: summary: Consulta de um report de credit portability deprecated: false description: '' tags: [] parameters: [] responses: '200': description: '' content: application/json: schema: type: object properties: reportId: type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ description: >- Identificador único do registro criado na Plataforma de Coleta de Métricas. pairedReportId: type: string format: uuid maxLength: 36 pattern: >- pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ description: >- Esse atributo indica o reportId do registro que forma uma correlação com o presente registro. Se essa informação existir, o status do registro atual deverá ser PAIRED creditPortabilityStatus: type: string description: >- Informação sobre o status de um pedido de portabilidade de crédito, onde: RECEIVED: Estado inicial. Indica que o pedido de portabilidade foi solicitado junto à instituição credora. O pedido deve permanecer neste estado até o próximo dia útil (D+1) onde começará a contar o prazo de 3 dias úteis para a etapa de contraproposta e o pedido de portabilidade deverá ser movido para PENDING PENDING: Indica que o pedido de portabilidade de crédito está na fase de contraproposta, onde a instituição credora poderá enviar uma contraproposta ou não para o cliente por qualquer canal (email, telefone, etc.) porém o aceite só deverá ser valido se o cliente aprovar no canal digital da instituição credora ACCEPTED_SETTLEMENT_IN_PROGRESS: Indica que a contraproposta não foi aceita pelo cliente e a instituição proponente terá que quitar o valor do contrato no mesmo dia em que o estado foi ativado. ACCEPTED_SETTLEMENT_COMPLETED: Indica que a instituição proponente já liquidou o contrato e comunicou a respeito à credora que está validando os dados do contrato bem como valores recebidos para a quitação do mesmo (nesta etapa a instituição credora tem 2 dias úteis para fornecer a confirmação e o recibo de quitação do contrato de empréstimo) PORTABILITY_COMPLETED: Indica que o pedido de portabilidade foi concluído com sucesso REJECTED: Indica que o pedido de portabilidade de crédito foi rejeitado, seja porque o cliente aceitou a contraproposta, ou porque a proponente rejeitou a liquidação que excedeu em 15% o valor do contrato original, entre outras possibilidades CANCELLED: Indica que o cliente cancelou o pedido de portabilidade de crédito PAYMENT_ISSUE: Indica que a Instituição Credora encontrou alguma inconsistência na liquidação efetuada e que a Instituição Proponente deverá realizar ajustes conforme sugerido pela Instituição Credora para solucionar a pendência antes do cancelamento do pedido de portabilidade de crédito enum: - PENDING - RECEIVED - ACCEPTED_SETTLEMENT_IN_PROGRESS - ACCEPTED_SETTLEMENT_COMPLETED - PORTABILITY_COMPLETED - REJECTED - CANCELLED example: RECEIVED createdAt: type: string format: date-time maxLength: 28 description: Carimbo do tempo do momento da criação do registro updatedAt: type: string format: date-time maxLength: 28 description: >- Carimbo do tempo do momento da última atualização do registro status: type: string description: >- Informa o status do registro de reporte. DISCARDED: O status DISCARDED indica que o reporte enviado pelo participante foi rejeitado pela PCM. O motivo do descarte será enviado com a resposta, podendo ser por conta de um reporte inválido ou por um erro no processamento. Não é possível modificar um reporte DISCARDED, portanto o reportador deverá corrigir o registro que apresentou erro e reenviar via POST. SINGLE: O status SINGLE indica que o reporte em questão não tem uma contraparte. Ele é utilizado em casos onde a conciliação entre dois reportes não é possível. ACCEPTED: O status ACCEPTED indica que a validação de formato do reporte não tem erros e este será enviado para processamento. UNPAIRED: O status UNPAIRED significa que o reporte atual não possui uma correspondência em outro reporte através do atributo fapiInteractionId. Indica um reporte divergente. PAIRED_INCONSISTENT: O status PAIRED_INCONSISTENT significa que o reporte corrente possui uma contraparte com o mesmo fapiInteractionId, mas os demais dados estão inconsistentes. Indica um reporte divergente. PAIRED: Indica que o reporte tem uma contraparte com o mesmo fapiInteractionId e os demais dados estão conciliados. Representa o estado final desejado em um fluxo correto. headers: {} '401': $ref: '#/components/responses/Default401Error' description: '' '403': $ref: '#/components/responses/Default403Error' description: '' '404': $ref: '#/components/responses/Record not found' description: '' '406': $ref: '#/components/responses/Default406Error' description: '' '429': $ref: '#/components/responses/Default429Error' description: '' '500': $ref: '#/components/responses/Default500Error' description: '' security: - bearer: [] /token-fresh/: post: summary: 'Geração de novo Token de autênticação ' deprecated: false description: '' operationId: token tags: - Security API parameters: [] requestBody: content: application/x-www-form-urlencoded: schema: type: object properties: client_id: type: string example: '{{client_id}}882ba573-787b-4462-bbd9-e3b39324aca7' client_secret: type: string example: 882ba573-787b-4462-bbd9-e3b39324aca7 grant_type: type: string example: client_credentials examples: {} responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/SecurityResponse' examples: '1': summary: Exemplo de resposta sucesso value: statusCode: 200 access_token: >- eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.KMUFsIDTnFmyG3nMiGM6H9FNFUROf3wh7SmqJp-QV30 expires_in: 21600 refresh_expires_in: 0 token_type: Bearer not-before-policy: 0 scope: profile email '2': summary: Cliente não autorizado value: statusCode: 401 message: ClientId is not valid to the orgId '3': summary: Grant type ausente value: error: unsupported_grant_type error_description: Unsupported grant_type '4': summary: Credenciais ausentes value: error: invalid_client error_description: Invalid client credentials '5': summary: Sucesso value: message: Internal server error headers: {} '400': description: '' content: application/json: schema: type: object properties: error: type: string error_description: type: string required: - error - error_description headers: {} '500': description: '' content: application/json: schema: $ref: '#/components/schemas/GenericError' headers: {} security: [] /token/: post: summary: Obtenção de Token de autênticação ativo deprecated: false description: '' operationId: token tags: - Security API parameters: [] requestBody: content: application/x-www-form-urlencoded: schema: type: object properties: client_id: type: string example: '{{client_id}}882ba573-787b-4462-bbd9-e3b39324aca7' client_secret: type: string example: 882ba573-787b-4462-bbd9-e3b39324aca7 grant_type: type: string example: client_credentials examples: {} responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/SecurityResponse' examples: '1': summary: Exemplo de resposta sucesso value: statusCode: 200 access_token: >- eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.KMUFsIDTnFmyG3nMiGM6H9FNFUROf3wh7SmqJp-QV30 expires_in: 21600 refresh_expires_in: 0 token_type: Bearer not-before-policy: 0 scope: profile email '2': summary: Cliente não autorizado value: statusCode: 401 message: ClientId is not valid to the orgId '3': summary: Grant type ausente value: error: unsupported_grant_type error_description: Unsupported grant_type '4': summary: Credenciais ausentes value: error: invalid_client error_description: Invalid client credentials '5': summary: Sucesso value: message: Internal server error headers: {} '400': description: '' content: application/json: schema: type: object properties: error: type: string error_description: type: string required: - error - error_description headers: {} '500': description: '' content: application/json: schema: $ref: '#/components/schemas/GenericError' headers: {} security: [] /report-api/v1/payments/status: post: summary: Inclusão de reports de payment status deprecated: false description: Adicionando payment status reporte (aguardando descrição). operationId: add-payment-status tags: - Payment Status parameters: [] requestBody: content: application/json: schema: type: array items: $ref: '#/components/schemas/PaymentStatusRequest' minItems: 1 maxItems: 5000 responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/PaymentStatusResponse' headers: {} '207': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/PaymentStatusResponse' headers: {} security: - bearer: [] /report-api/v1/payments/status/{paymentId}: get: summary: Consulta de um report específico usando identificador deprecated: false description: Busca de um reporte pelo payment id (aguardando descrição). operationId: get-payment-status tags: - Payment Status parameters: - name: paymentId in: path description: '' required: true example: '' schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/PaymentStatusGetResponse' headers: {} '401': $ref: '#/components/responses/Default401Error' description: '' '403': $ref: '#/components/responses/Default403Error' description: '' '404': $ref: '#/components/responses/Record not found' description: '' '406': $ref: '#/components/responses/Default406Error' description: '' '429': $ref: '#/components/responses/Default429Error' description: '' '500': $ref: '#/components/responses/Default500Error' description: '' security: - bearer: [] /report-api/v2/report: post: summary: Untitled Endpoint deprecated: false description: '' tags: [] parameters: [] responses: '200': description: '' content: application/json: schema: type: object properties: {} headers: {} security: - bearer: [] components: schemas: ClientReportRequest: description: >- Representa os dados que deverão ser enviados para a inclusão de reportes pelo lado do Client (iniciador da chamada). Informações adicionais sobre cada campo podem ser encontradas na documentação funcional em [https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/37879861/Reporte#Modelos-para-reportes-Private](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/37879861/Reporte#Modelos-para-reportes-Private) type: object required: - endpoint - statusCode - httpMethod - additionalInfo - timestamp - processTimespan - clientSSId - clientOrgId - serverOrgId - endpointUriPrefix - role properties: fapiInteractionId: description: >- UUID RFC4122 que identifica uma transação específica entre dois participantes no ecossistema Open Finance. Este identificador é derivado do header HTTP x-fapi-interaction-id, conforme especificação RFC4122 para geração de identificadores únicos universais. Serve como chave de correlação fundamental para rastreabilidade, auditoria e conciliação de transações entre instituições participantes. Mais informações em Cabeçalhos HTTP na documentação de produtos do Open Finance Brasil Regra de Preenchimento: - OBRIGATÓRIO em todos os cenários onde o x-fapi-interaction-id foi gerado, incluindo respostas com status 4xx (incluindo 408 - timeout), respostas com status 5xx recebidas e transações completadas com sucesso type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: d78fc4e5-37ca-4da3-adf2-9b082bf92280 endpoint: type: string description: >- Identificação do endpoint que foi utilizado na transação reportada. A identificação do endpoint deve estar presente na lista de endpoints aceitos pela PCM para ser considerado válido. Nesse campo não deve ser utilizado o path da requisição original. A lista de endpoints aceitos pela PCM pode ser encontrada em https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/1069350926/Endpoints+aceitos+pela+PCM format: uri example: /open-banking/consents/v2/consents statusCode: description: >- Status de retorno HTTP da solicitação. Regras de preenchimento: - No contexto operacional do Open Finance, de acordo com a definição de governança, a instituição consumidora (Client) deve aguardar até 15 segundos pela resposta da instituição provedora (Server). - Caso esse período seja atingido ou excedido (≥ 15 segundos) sem resposta, a instituição consumidora pode, por decisão própria e para preservar a experiência do usuário, encerrar a conexão. Nessa situação, o evento deve ser reportado com status code 408, caracterizando timeout na interação, ainda que a interrupção tenha sido iniciada pelo lado consumidor. - Por sua vez, quando a instituição estiver atuando como provedora (Server) e encerrar a conexão por não ter recebido a requisição completa dentro do tempo esperado, também deverá reportar status code 408, em conformidade com a RFC 7231. type: integer format: int32 minimum: 200 maximum: 599 example: 200 httpMethod: type: string description: Método HTTP da solicitação. enum: - GET - POST - PUT - DELETE - PATCH example: GET correlationId: description: >- ID de correlação que identifica uma sequência de chamadas inter-relacionadas no ecossistema. Diferente do fapiInteractionId que serve para identificar cada par request-response (interação), o identificador de correlação serve para ligar diferentes reportes quando estes representam uma jornada ou uma sequência de chamadas. Este valor é de livre provimento pelo reportador. type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,100}$ maxLength: 100 example: uGQHwNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf2 timestamp: description: >- Data/Hora UTC no formato ISO8601 com milissegundos (YYYY-MM-DDTHH:mm:ss.sssZ) do momento em que a chamada foi disparada, imediatamente antes do primeiro byte enviado na requisição. type: string format: date-time maxLength: 28 example: '2021-11-11T18:08:08.278Z' processTimespan: type: number description: >- Tempo em milissegundos inteiros decorrido desde o registro do timestamp até a chegada do primeiro byte da resposta do server. example: 120.000001 clientSSId: description: >- Identificador do software statement de onde a chamada foi disparada. A PCM garante que foi esta orgId que obteve o token de acesso utilizado neste reporte. type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: 84570da9-567b-4201-9b77-c715bc5bffde clientOrgId: description: Identificador da organização **de onde** a chamada foi disparada type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: 56411f7e-d58b-44a8-8a2b-ff326d3f2955 serverOrgId: description: Identificador da organização **para onde** a chamada foi feita type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: c1ca8e62-9d6f-4ea3-84f2-d66bc0a8f7dc endpointUriPrefix: description: >+ Endereço do servidor de destino da chamada, incluindo o prefixo quando houver. O formato do campo deverá ser o seguinte: `https://{host}/{prefixo}`, sendo: * `host`: endereço FQDN do servidor de destino * `prefixo`: toda a parte do path que vem antes da string `/open-banking` Exemplos: - Para uma requisição em `https://openbanking.instituicao-1.com.br/opbk/open-banking/products-services/v1/business-accounts`, o dado a ser enviado é `https://openbanking.instituicao-1.com.br/opbk`. - Para uma requisição em `https://openbanking.instituicao-2.com.br/open-banking/products-services/v1/business-accounts`, o dado a ser enviado é `https://openbanking.instituicao-1.com.br/`. Nos reportes relativos aos endpoints /token e /register este campo deverá conter a URL inteira do request. Exemplos: - `https://oauth2.cartaodummy.opf.instituicao/as/token.oauth2` - `https://instituicao.com.br/orgs/instituicao/reg` - Para uma requisição em https://openbanking.instituicao-1.com.br/opbk/open-banking/products-services/v1/business-accounts, o dado a ser enviado é https://openbanking.instituicao-1.com.br/opbk. - Para uma requisição em https://openbanking.instituicao-2.com.br/open-banking/products-services/v1/business-accounts, o dado a ser enviado é https://openbanking.instituicao-1.com.br type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,200}$ maxLength: 200 example: https://openbanking.instituicao-1.com.br/opbk role: description: >- ENUM indicando se o reporte que está sendo enviado apresenta a visão do server ou do client. Obrigatório valor "CLIENT" type: string enum: - CLIENT - SERVER additionalInfo: description: >- Informações adicionais sobre o reporte deste endpoint/método. Possui característica variável. As regras de preenchimento estão na documentação funcional em [openfinancebrasil](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/37879861/Reporte#additionalInfo). Caso não exista o campo enviar como um objeto vazio: {} type: object properties: consentId: type: string description: >- O consentId é o identificador único do consentimento e deverá ser um URN - Uniform Resource Name. Deve ser preenchido com a mesma string obtida no campo `.data.consentId` retornado após a chamada inicial na API "POST /consent". *Ao reportar o uso de um endpoint /token, o identificador único de consentimento só será reportado nos casos em que "grant_type" é do tipo "authorization_code" ou do tipo "refresh_token", uma vez que esta informação de consentId é inexistente quando "grant_type" é do tipo pattern: >- ^urn:[a-zA-Z0-9][a-zA-Z0-9-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*'%\/?#]+$ example: urn:bancoex:C1DD33123 personType: type: string description: >- Identifica a natureza do solicitante em uma transação ou consentimento. Deve ser preenchida baseado no tipo de pessoa responsável pelo consentimento. Deverá ser obserdado se `.data.businessEntity` estiver preenchido no payload, se estiver então preencher com "PJ", se não estiver então preencher com "PF" enum: - PF - PJ - PESSOA_NATURAL - PESSOA_JURÍDICA example: PJ localInstrument: type: string description: >- Especifica a forma de iniciação do pagamento. Deve ser preenchido com a mesma string informada no payload ".data.localInstrument" enum: - MANU - DICT - INIC - AUTO - QRDN - QRES example: MANU status: type: string description: >- Registra os códigos de erro detalhados de uma requisição que resultou em um erro HTTP (série 4xx ou 5xx). Identifica o status atual do recurso (como um consentimento ou um pagamento) que está sendo reportado. Caso a informação esteja em formato de lista, enviar apenas o valor do primeiro item da lista Regra de preenchimento: - Deve ser preenchido com a mesma string obtida no ".data.status". Caso a informação esteja em formato de lista, enviar apenas o valor do primeiro item da lista example: AUTHORISED clientIp: description: >- Deve ser preenchido com o Endereço IPv4 ou IPv6 do client que fez a requisição type: string rejectReason: description: >- Deve ser preenchido com a mesma string obtida no ".data.rejectionReason.code" type: string errorCodes: type: string description: >- Registra os códigos de erro detalhados de uma requisição que resultou em um erro HTTP (série 4xx ou 5xx). Caso o HTTP Code seja 4XX ou 5XX, esse campo deve ser preenchido com a lista das strings obtidas em ".errors[].code" . Não havendo string, deve ser enviada uma lista vazia. Regras de preenchimento: - Caso o HTTP Code seja 4XX ou 5XX, esse campo deve ser preenchido com a lista das strings obtidas em ".errors[].code", devendo constar apenas um código de erro. Não havendo string, deve ser enviada uma lista vazia. example: NAO_INFORMADO webhookEnable: type: string description: >- Indica o identificador x-webhook-interaction-id quando uma requisição GET é realizada após o estímulo de um webhook. Indica se há URLs de webhook configuradas em uma requisição. Deve ser preenchido com o valor string TRUE caso haja pelo menos um item indicado na lista do campo ".webhook_uris" no payload, caso contrário deverá ser preenchido com o valor string FALSE example: 'TRUE' webhookInteractionId: type: string description: >- Caso o GET esteja sendo feito após o estímulo do webhook, o x-webhook-interaction-id deverá ser indicado example: 530bfa60-e40f-4776-96c2-82b418aaa0af enrollmentId: type: string description: >- Identificador usado para registrar uma jornada ou um vínculo inicial. Deve ser preenchido com a mesma string obtida no campo `.data.enrollmentId` retornado após a chamada inicial na API "POST /enrollments". *Ao reportar o uso de um endpoint /token, o identificador único de consentimento só será reportado nos casos em que "grant_type" é do tipo "authorization_code" ou do tipo "refresh_token", uma vez que esta informação de enrollmentId é inexistente quando "grant_type" é do tipo "client_credentials". pattern: >- ^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*'%\/?#]+$ example: urn:bancoex:C1DD33123 authenticatorAttachment: type: string description: >- Descreve como o autenticador (por exemplo, um dispositivo FIDO) está anexado ao cliente que realiza a autenticação (ex: platform para autenticadores integrados como Face ID ou cross-platform para chaves de segurança USB). Deve ser preenchido com a mesma string definida em ".data.authenticatorAttachment". Regra de preenchimento: - Deve ser preenchido com a mesma string definida em ".data.authenticatorAttachment". Não havendo string, deve ser explicitamente enviado esse additionalInfo como sendo uma string vazia.​ example: cross-platform platform: type: string description: Identifica a plataforma utilizada enum: - ANDROID - BROWSER - CROSS_PLATFORM - IOS example: ANDROID rp: type: string description: >- Relying Party" (RP) onde reside originalmente na requisição FIDO. Deve ser preenchido com a mesma string definida em ".data.rp" example: passkey.app-demo.io rejectionReasonCode: type: string description: >- Código da razão pela qual um consentimento ou pagamento foi rejeitado. Deve ser preenchido com a mesma string obtida no ".data.rejectionReason.code" ou ".data.rejection.reason.code" ou ".data.cancellation.rejectionReason"​ example: NAO_INFORMADO rejectionReasonDetail: type: string description: >- Detalhe mais específico sobre a rejeição de um consentimento ou pagamento. Deve ser preenchido com a mesma string obtida no ".data.rejectionReason.detail". Caso a informação esteja em formato de lista, enviar apenas o valor do primeiro item da lista. Caso consentimento rejeitado de versões nas quais não havia o campo rejectionReason retornar o seguinte detail: Motivo de rejeição inexistente em versões anteriores. Obrigatório somente quando o status for RJCT ou REJECTED example: O usuário rejeitou a autorização do consentimento authorisationFlow: type: string description: >- Identifica o modo de pagamento acionado no consentimento. Identifica o fluxo de autorização em que um pagamento ou operação foi solicitado. Deve ser preenchido com a mesma string obtida no ".data.authorisationFlow" Regra de preenchimento: - O campo deve ser preenchido com a string obtida em ".data.authorisationFlow". Se a informação for uma lista, utilize apenas o primeiro item. Caso a string de ".data.authorisationFlow" seja nula, preencha obrigatoriamente com HYBRID_FLOW. É fundamental que sempre seja reportado um dos valores do enum (como HYBRID_FLOW, CIBA ou FIDO), e nunca um valor nulo, pois para fins de telemetria é necessário identificar explicitamente qual fluxo de autorização foi utilizado, independentemente da permissão de valor nulo nas especificações das APIs do Open Finance. enum: - CIBA_FLOW - ' FIDO_FLOW' - HYBRID_FLOW example: HYBRID_FLOW paymentType: type: string description: > Identifica o modo de pagamento acionado no consentimento 1. Envio obrigatório para a role Client​ 2. Conteudo ENUM do novo campo varia de acordo com o endpoint conforme tabela. Regra de Preenchimento V4: Deve observar se é imediato, agendamento único ou agendamento recorrente. Se for imediato o campo payment.date vai estar preenchido. Se for agendamento único, o campo payment.schedule.single vai estar preenchido. Se for agendamento recorrente o campo payment.schedule vai estar preenchido com valor diferente de single Regra de Preenchimento V5: Se /data/payment/details/purpose = IMMEDIATE, paymentType = IMMEDIATE Se /data/payment/details/purpose = SINGLE_SCHEDULED, paymentType = SCHEDULED Se /data/payment/details/purpose = RECURRENT_SCHEDULED, paymentType = RECURRENT Se /data/payment/details/purpose = WITHDRAW, paymentType = WITHDRAW Se /data/payment/details/purpose = CHANGE, paymentType = CHANGE enum: - IMMEDIATE - SCHEDULED - RECURRENT - SWEEPING - AUTOMATIC - WITHDRAW - CHANGE example: SCHEDULED dropReason: description: >- Regras: • O campo dropReason deve ser adicionado nas informações do campo additionalInfo que deverá ser enviado no reporte do provedor do serviço consumido (papel SERVER) • O reporte deverá ser feito por todos os transmissores de dados e detentoras de conta. Para os casos em que ocorram falhas técnicas que impossibilitem a verificação do CPF/CNPJ (incluindo, mas não se limitando, a erros HTTP 4xx, 500 ou timeout na resposta), o reporte deve ser realizado com o valor NO_CREDENTIAL, Em jornadas de múltipla alçada de pessoas jurídicas, quando a autenticação é bem-sucedida mas os poderes constituídos são insuficientes para finalização do Hybrid Flow, deve-se usar NO_AUTHORITY. Diretrizes: • NONE: quando o CPF (loggedUser) / CNPJ (businessEntity) possui credencial autenticadora e poderes suficientes para prosseguir o fluxo monitorado - exemplo: PF, cliente, que possui credencial ativa, mas não se autenticou; cliente que se autenticou utilizando a credencial correta. • NO_CREDENTIAL: quando o CPF (loggedUser) / CNPJ (businessEntity) não for cliente ou não possuir credencial válida/ativa para prosseguir no fluxo monitorado ou quando o HTTP response code for diferente de 201. • NO_AUTHORITY: quando o CPF (loggedUser) / CNPJ (businessEntity) consegue se autenticar, mas não dispõe de poderes ou alçadas para prosseguir no fluxo de compartilhamento de dados e serviços. • NO_AUTHORITY_PERSON_MISMATCH: quando o CPF (loggedUser) não possui relação com a credencial utilizada na etapa de autenticação do Hybrid Flow - exemplo: consentimento criado para um CPF e autenticado por outro; criado para um CNPJ e autenticado por CPF sem relação com o CNPJ. type: string enum: - NO_AUTHORITY - NO_AUTHORITY_PERSON_MISMATCH - NO_CREDENTIAL - ' NONE' example: NO_CREDENTIAL grantType: type: string description: >- O valor deste campo deve ser o valor enviado no campo grant_type da chamada ao endpoint de token AUTHORIZATION_CODE: Utilizado na autorização de acesso a um recurso por meio de login de usuário REFRESH_TOKEN: Utilizado para obter um novo token de acesso quando o token anterior expira CLIENT_CREDENTIALS: Utilizado na autorização de acesso entre aplicações onde não há a figura do usuário enum: - AUTHORIZATION_CODE - REFRESH_TOKEN - CLIENT_CREDENTIALS example: AUTHORIZATION_CODE cancelledFrom: type: string description: |- Informa o meio pelo qual foi realizado o cancelamento Regra de preenchimento: - Preencher com o valor do campo ".cancellation.cancelledFrom" enum: - INICIADORA - DETENTORA example: INICIADORA interval: type: string description: >- Periodicidade que a recorrência foi definida (semanal, trimestral, anual...)​. Regras: - Preencher com o valor do campo "interval"​ - Preencher com o valor do campo ".data.recurringConfiguration.interval" Deve ser preenchido quando paymentType for AUTOMATIC enum: - SEMANAL - MENSAL - TRIMESTRAL - SEMESTRAL - ANUAL example: ANUAL amountType: type: string description: >- Valida se o serviço contratado possui maior conversão em relação ao tipo do valor definido, sendo ele fixo ou variável​. Regra de preenchimento: - Se não enviando nem ".data.recurringConfiguration.automatic.fixedAmount" e nem ".data.recurringConfiguration.automatic.maximumVariableAmount", “VARIAVEL”; ou - Se enviado fixedAmount, “FIXO”; ou - Se enviado maximumVariableAmount, “VARIAVEL” - Deve ser preenchido quando paymentType for AUTOMATIC enum: - FIXO - VARIAVEL example: FIXO isFirstPayment: type: string description: >- Valida se o serviço possui um pagamento associado na adesão. Regra de preenchimento: - Se preenchido o campo ".data.recurringConfiguration.automatic.firstPayment", enviar "TRUE"; ou - Se não preenchido o campo ".data.recurringConfiguration.automatic.firstPayment", enviar "FALSE" enum: - 'TRUE' - 'FALSE' example: 'TRUE' hasMinimumAmount: type: string description: >- Valida se possui o valor mínimo definido pelo usuário recebedor​. Regras de preenchimento: - Se preenchido o campo “.data/recurringConfiguration.automatic.minimumVariableAmount”, enviar "TRUE"; ou - Se não preenchido o campo “.data.recurringConfiguration.automatic.minimumVariableAmount” enviar "FALSE" - Deve ser preenchido quando paymentType for AUTOMATIC enum: - 'TRUE' - 'FALSE' title: '' example: 'TRUE' isRetryAccepted: type: string description: >- Identifica se foi autorizado a tentativas de pagamento em dias subsequentes na situação de falha do pagamento da recorrência Regras de preenchimento: - Preencher com o valor do campo "isRetryAccepted"​ - Deve ser preenchido quando paymentType for AUTOMATIC enum: - 'TRUE' - 'FALSE' example: 'TRUE' recurringPaymentId: type: string description: >- Código ou identificador único informado pela instituição detentora da conta para representar a iniciação de pagamento Regra de Preenchimento: - Preencher com o valor do campo ".data.recurringPaymentId" pattern: ^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$ example: TXpRMU9UQTROMWhZV2xSU1FUazJSMDl paymentReference: type: string description: >- Identifica a referência do pagamento no tempo (semanal, mensal, trimestral...). Regras de preenchimento:​ - Campo de preenchimento obrigatório caso seja um pagamento de Pix automático e deve ser enviado para critérios de coleta de métricas do ecossistema. Caso essa regra não seja respeitada, a instituição detentora da conta deve retornar um erro HTTP 422 com o código DETALHE_PAGAMENTO_INVALIDO. Deve ser preenchido quando paymentType for AUTOMATIC example: R/2025-09-23/P1M originalRecurringPaymentId: type: string description: >- Identifica o primeiro pagamento da recorrência em relação as retentativas​. Regras de preenchimento: - Preencher com o valor do campo "originalRecurringPaymentId"​ - Deve ser preenchido quando paymentType for AUTOMATIC pattern: ^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$ example: TXpRMU9UQTROMWhZV2xSU1FUazJSMDl cancellationReason: type: string description: >- Identifica o estado que o pagamento estava quando foi cancelado​. Regras: - Preencher com o valor do campo ".cancellation.reason" - Deve ser enviado quando em um GET ou POST /payment e o campo status é "CANC" ou em um PATCH /payment (que é a API de cancelamento) example: CANCELADO_PENDENCIA nfcPayment: type: string description: >- Indica se o pagamento foi realizado via NFC. Regras de preenchimento: - Preencher com o valor do campo "nfcPayment" - Enviar o valor do campo "x-bcb-nfc", presente no de request header do endpoint de autorização de consentimentos via JSR (POST /consents/{consentId}/authorise) enum: - 'TRUE' - 'FALSE' example: 'TRUE' revocationReasonCode: type: string description: >- Código indicador do motivo da revogação 1. Envio obrigatório para as roles Server e Client Regra de Preenchimento: Deve ser preenchido com a mesma string obtida no ".data.cancellation.reason.revocationReason". Caso a informação esteja em formato de lista, enviar apenas o valor do primeiro item da lista. example: REVOGADO_OUTRO revocationReasonDetail: type: string description: >- Detalhe sobre o motivo de revogação indicado no campo 1. Envio obrigatório para a role Server e Client Regra de preenchimento: - Deve ser preenchido com a string obtida no campo ".data.revocation.reason.detail". Caso a informação esteja em formato de lista, enviar apenas o valor do primeiro item da lista. revokedBy: type: string description: |- Quem iniciou a solicitação de revogação 1. Envio obrigatório para a role Server e Client enum: - INICIADORA - USUARIO - DETENTORA revokedFrom: type: string description: >- Canal onde iniciou-se o processo de revogação 1. Envio obrigatório para a role Server e Client Regra de Preenchimento: Deve ser preenchido com a mesma string obtida no ".data.rejection.rejectedBy". enum: - INICIADORA - DETENTORA example: DETENTORA rejectedBy: type: string description: >- Quem iniciou a solicitação de rejeição 1. Envio obrigatório para a role Server e Client Regra de preenchimento: - Deve ser preenchido com a mesma string obtida no ".data.rejection.rejectedBy". enum: - INICIADORA - USUARIO - DETENTORA example: INICIADORA rejectedFrom: type: string description: >- Canal onde iniciou-se o processo de rejeição 1. Envio obrigatório para a role Server e Client Deve ser preenchido com a mesma string obtida no ".data.rejection.rejectedFrom". enum: - INICIADORA - DETENTORA example: DETENTORA statusSummary: type: object properties: available: type: string description: Disponível example: '1' unavailable: type: string description: Indisponível example: '2' temporarilyUnavailable: type: string description: Temporariamente indisponível example: '0' pendingAuthorisation: type: string description: Pendente de autorização example: '2' description: |- Sumarização das quantidades de reportes por status. Regra de Preenchimento: - Sumarização da quantidade por ENUM observado em data.status Obrigatório para PF e PJ companyProfileInfo: type: object properties: naturezaJurídica: type: string description: >- Código que identifica a constituição jurídico-institucional da entidade, conforme a Tabela de Natureza Jurídica do IBGE, categorizando-a em: Administração pública; Entidades empresariais; Entidades sem fins lucrativos; Pessoas físicas e organizações internacionais; e Outras instituições extraterritoriais. Regra de preenchimento: - Obrigatório para clientes PJ. O cliente (receptor/iniciador) deve obter essa informação a partir de fontes oficiais (ex., Governo Federal/Dados Abertos/Base CNPJs ou API do SERPRO), com base no CNPJ do usuário, e reportá-la como parte do additionalInfo quando houver consumo as APIs de criação de consentimento para compartilhamento de dados e serviços. pattern: ^\d{4}$ example: '2121' porteEmpresa: type: string description: >- Código numérico que identifica o porte da empresa do cliente Pessoa Jurídica (PJ), conforme a classificação oficial da Receita Federal do Brasil. Regra de preenchimento: Obrigatório para clientes PJ. O receptor/iniciador, que detém o CNPJ do usuário, é responsável por obter o código do porte da empresa. Esta informação deve ser consultada e validada a partir de fontes oficiais, como a base de Dados Abertos do CNPJ ou a API do SERPRO, ambas mantidas pelo Governo Federal, e conforme o Dicionário de Dados do CNPJ da Receita Federal. O valor deve ser enviado como parte do additionalInfo quando houver consumo as APIs de criação de consentimento para compartilhamento de dados e serviços. pattern: ^\d{2}$ example: '05' description: >- Objeto JSON que representa o perfil da Pessoa Jurídica (PJ) do cliente, contendo informações como a natureza jurídica e o porte da empresa, conforme a classificação oficial da Receita Federal do Brasil. Regra de preenchimento: - Obrigatório para clientes PJ. O objeto deve conter um objeto de perfil da empresa. As informações de natureza jurídica e porte devem ser obtidas prioritariamente da API oficial Consulta CNPJ (RFB/SERPRO) ou dos Dados Abertos do CNPJ (RFB), conforme o Dicionário de Dados do CNPJ da Receita Federal. Este objeto deve ser enviado como parte do additionalInfo ao consumir as APIs de criação de consentimento para dados e serviços. Consulta CNPJ — Catálogo de APIs governamentais (API/Swagger) https://www.gov.br/conecta/catalogo/apis/consulta-cnpj Portal de Dados Abertos (arquivo de dados) https://dados.gov.br/dados/conjuntos-dados/cadastro-nacional-da-pessoa-juridica---cnpj paymentDate: type: string description: |- Data em que o pagamento será realizado. Regra de prennchimento: Deve ser preenchido com o conteúdo de data.payment.date Mutualmente excludente com o campo paymentSchedule example: '2025-09-01' paymentSchedule: type: string description: >- Estrutura responsável pela parametrização dos pagamentos que acontecerão sob aquele consentimento Regra de preenchimento: - Deve ser preenchido com o conteúdo de data.payment.schedule - Mutualmente excludente com o campo paymentDate example: >- {"monthly":{"dayOfMonth":3,"startDate":"2026-02-03","quantity":12}} paymentList: type: array items: type: object properties: paymentId: type: string description: >- Código ou identificador único informado pela instituição detentora da conta para representar a iniciação de pagamento​. example: 4d4dec4b-5960-4041-8099-1340b8c8a4bb consentId: type: string description: >- Identificador único do consentimento criado para a iniciação de pagamento solicitada​. example: urn:bancoex:C1DD33123 statusUpdateDateTime: type: string description: >- Data e hora da última atualização da iniciação de pagamento. example: '2026-02-08T19:53:53Z' status: type: string description: Estado atual do pagamento. example: ASCS rejectionReasonCode: type: string description: >- Código identificador do motivo de rejeição. Deve ser enviado vazio se não houver conteúdos, seguindo a mesma regra da API de negócio relacionada example: NAO_INFORMADO rejectionReasonDetail: type: string description: >- Detalhe sobre o código identificador do motivo de rejeição. Deve ser enviado vazio se não houver conteúdos, seguindo a mesma regra da API de negócio relacionada example: Detalhes sobre a rejeição description: >- Lista de dados de pagamentos com pagamentos imediatos e agendamentos únicos ou recorrentes. Regra de preenchimento: Deve ser enviado obrigatoriamente para os tipos de pagamento (paymentType) IMMEDIATE, SCHEDULED e RECURRENT, mesmo que a lista contenha apenas um item. Para o mesmo consentId não podem ser reportados nesta lista mais do que 60 paymentId minItems: 0 maxItems: 60 recurringPaymentDate: type: string description: > Data em que o pagamento será realizado no formato timezone UTC-3 (UTC time format). Regra de preenchimento: - Deve ser preenchido com a mesma string obtida no ".data.date". example: '2023-10-10' referenceStartDate: type: string description: > Data prevista para o início do ciclo de cobrança dos pagamentos associados à recorrência. Trata-se de uma string com data conforme especificação RFC-3339, seguindo o horário de Brasília (UTC-3). O pagamento inicial avulso, declarado no objeto firstPayment do consentimento, não está sujeito a essa data Regra de Preenchimento: - Preencher com o valor do campo ".data.recurringConfiguration.automatic.referenceStartDate". Deve ser preenchido quando paymentType for AUTOMATIC. title: '' example: '2025-09-01' recurringConsentId: type: string description: >+ Identificador único do consentimento de longa duração criado para a iniciação de pagamento solicitada Regra de Preenchimento: Preencher com o valor do campo ".data.recurringConsentId". pattern: >- ^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*'%\/?#]+$ example: urn:bancoex:C1DD331237 journeyIsLinked: type: string description: >- Identificador único do consentimento de longa duração criado para a iniciação de pagamento solicitada Regra de preenchimento: - Deve ser preenchido com a mesma string enviada ou recebida no campo “.data.journey.isLinked”, retornado após a chamada inicial na API “POST /enrollments” em caso de Jornada Otimizada. - Em casos em que a informação não está disponível espera-se o envio do valor FALSE. title: '' enum: - 'TRUE' - 'FALSE' example: 'FALSE' journeyLinkId: type: string description: > Identifica o consentimento de dados vinculado a uma Jornada Otimizada. Regra de preenchimento: Deve ser preenchido com a mesma string enviada ou recebida no campo “.data.journey.linkId”, retornado após a chamada inicial na API “POST /consent” (Pagamentos Automáticos) ou “POST /enrollments” (Jornada Sem Redirecionamento) em caso de Jornada Otimizada. Deve ser enviado se journeyIsLinked for TRUE. pattern: >- ^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*'%\/?#]+$ example: urn:bancoex:C1DD33123 authorisationFlowIntent: type: string description: >- Identificar o fluxo de autorização através do campo adicional de intenção do fluxo de autorização Regra de preenchimento: O campo deve ser preenchido obrigatoriamente com um dos valores do enum: HYBRID_FLOW, CIBA_FLOW ou FIDO_FLOW. A instituição iniciadora deve comunicar a intenção de fluxo de autorização que será utilizado na jornada de pagamento. Esta informação é essencial para a desambiguação das jornadas de pagamento na etapa de consentimento. Nota técnica: Esta informação não existe tecnicamente nesta etapa da API de Consents; cabe à instituição iniciadora, por seu conhecimento prévio, reportar sua intenção de fluxo que será efetivamente utilizado na transação. enum: - HYBRID_FLOW - 'CIBA_FLOW ' - FIDO_FLOW example: HYBRID_FLOW tokenId: type: string description: >- Identificador único e criptograficamente seguro do token utilizado no consumo da API. A implementação do tokenId preencherá a lacuna de rastreabilidade, permitindo vincular a emissão de cada token (incluindo os de CLIENT_CREDENTIALS) às suas respectivas jornadas, mesmo quando múltiplos consentimentos forem iniciados por um único token. Isso resultará em uma visão mais completa da jornada do token, aprimorando a capacidade de rastreabilidade e análise operacional para as instituições e do ecossistema. Regra de Preenchimento: O tokenId será gerado pelo cliente (role CLIENT) no momento do reporte para a PCM, aplicado um hash SHA256 sobre o token recebido e um Pepper (segredo) gerenciado internamente pela instituição. Este tokenId deve ser reportado na PCM, complementando as informações já existentes de grant_type e consentId (onde aplicável). Para garantir a robustez criptográfica do hash, o Pepper utilizado deverá ser um valor aleatório e criptograficamente forte, gerenciado internamente pela instituição. Recomenda-se um tamanho de 128 a 256 bits para o Pepper, aplicado no cálculo do tokenId, como por exemplo, SHA256 (token + Pepper). O tokenId será composto pelos 72 bits iniciais do hash Base64URL-safe encoded. Importante: O tokenId será gerado apenas quando o token for recebido com sucesso na resposta do POST /token. Em casos nos quais a requisição ao POST /token resultar em erros 4xx ou 5xx, o token não será obtido e, consequentemente, o tokenId não poderá ser gerado. Nessas situações, o campo tokenId deve ser omitido do reporte à PCM. example: c9ng8aKzxNXm ServerReportRequest: description: >- Representa os dados que deverão ser enviados para a inclusão de reportes pelo lado do Server (receptor da chamada). Informações adicionais sobre cada campo podem ser encontradas na documentação funcional em [https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/37879861/Reporte#Modelos-para-reportes-Private](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/37879861/Reporte#Modelos-para-reportes-Private) type: object required: - endpoint - statusCode - httpMethod - timestamp - processTimespan - clientOrgId - serverOrgId - role properties: fapiInteractionId: description: >- UUID RFC4122 que identifica uma transação específica entre dois participantes no ecossistema Open Finance. Este identificador é derivado do header HTTP x-fapi-interaction-id, conforme especificação RFC4122 para geração de identificadores únicos universais. Serve como chave de correlação fundamental para rastreabilidade, auditoria e conciliação de transações entre instituições participantes. Mais informações em Cabeçalhos HTTP na documentação de produtos do Open Finance Brasil Regras de preenchimento - OBRIGATÓRIO quando o x-fapi-interaction-id foi recebido na requisição ou quando o Server gerou o x-fapi-interaction-id conforme especificação da API de Produto. Falhas de aplicação, validação, autorização, timeout, indisponibilidade de dependências ou erros internos (5xx) NÃO caracterizam, por si só, falha crítica para fins de ausência do x-fapi-interaction-id, desde que a requisição tenha sido recebida pelo Server. Nota: A ausência do fapiInteractionId compromete significativamente a capacidade de correlação e auditoria das transações no ecossistema Open Finance type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: d78fc4e5-37ca-4da3-adf2-9b082bf92280 endpoint: type: string description: >- Identificação do endpoint que foi utilizado na transação reportada. A identificação do endpoint deve estar entre as entradas desse enum para ser considerado válido. Nesse campo não deve ser utilizado o path da requisição original, uma vez que ao comparar com os valores dessa enum, ele não será considerado válido. format: uri example: /open-banking/consents/v2/consents statusCode: description: >- Status de retorno HTTP da solicitação. Regra de preenchimento: - No contexto operacional do Open Finance, de acordo com a definição de governança, a instituição consumidora (Client) deve aguardar até 15 segundos pela resposta da instituição provedora (Server). Caso esse período seja atingido ou excedido (≥ 15 segundos) sem resposta, a instituição consumidora pode, por decisão própria e para preservar a experiência do usuário, encerrar a conexão. Nessa situação, o evento deve ser reportado com status code 408, caracterizando timeout na interação, ainda que a interrupção tenha sido iniciada pelo lado consumidor. Por sua vez, quando a instituição estiver atuando como provedora (Server) e encerrar a conexão por não ter recebido a requisição completa dentro do tempo esperado, também deverá reportar status code 408, em conformidade com a RFC 7231. type: integer format: int32 minimum: 200 maximum: 599 example: 200 httpMethod: description: Método HTTP da solicitação. type: string enum: - GET - POST - PUT - DELETE - PATCH example: GET correlationId: description: Não utilizado pelo server. type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,100}$ maxLength: 100 example: uGQHwNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf2 timestamp: description: >- Data/Hora UTC no formato ISO8601 com milissegundos (YYYY-MM-DDTHH:mm:ss.sssZ) do momento em que a chamada foi recebida, imediatamente antes do primeiro byte enviado na requisição. type: string format: date-time maxLength: 28 example: '2021-11-11T18:08:08.152Z' processTimespan: type: number description: >- Tempo em milissegundos inteiros decorrido desde o registro do timestamp até a finalização do envio dos dados. example: 120.000001 clientOrgId: description: Identificador da organização **de onde** a chamada foi disparada type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: 56411f7e-d58b-44a8-8a2b-ff326d3f2955 serverOrgId: description: >- Identificador da organização **para onde** a chamada foi feita. A PCM garante que foi esta orgId que obteve o token de acesso utilizado neste reporte. type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: c1ca8e62-9d6f-4ea3-84f2-d66bc0a8f7dc role: description: >- ENUM indicando se o reporte que está sendo enviado apresenta a visão do server ou do client. Obrigatório valor "SERVER" type: string enum: - CLIENT - SERVER additionalInfo: description: >- Informações adicionais sobre o reporte deste endpoint/método. Possui característica variável. As regras de preenchimento estão na documentação funcional em [openfinancebrasil](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/37879861/Reporte#additionalInfo). Caso não exista o campo enviar como um objeto vazio: {} type: object properties: dropReason: type: string description: >- Regras: • O campo dropReason deve ser adicionado nas informações do campo additionalInfo que deverá ser enviado no reporte do provedor do serviço consumido (papel SERVER) • O reporte deverá ser feito por todos os transmissores de dados e detentoras de conta. Para os casos em que ocorram falhas técnicas que impossibilitem a verificação do CPF/CNPJ (incluindo, mas não se limitando, a erros HTTP 4xx, 500 ou timeout na resposta), o reporte deve ser realizado com o valor NO_CREDENTIAL, Em jornadas de múltipla alçada de pessoas jurídicas, quando a autenticação é bem-sucedida mas os poderes constituídos são insuficientes para finalização do Hybrid Flow, deve-se usar NO_AUTHORITY. Diretrizes: • NONE: quando o CPF (loggedUser) / CNPJ (businessEntity) possui credencial autenticadora e poderes suficientes para prosseguir o fluxo monitorado - exemplo: PF, cliente, que possui credencial ativa, mas não se autenticou; cliente que se autenticou utilizando a credencial correta. • NO_CREDENTIAL: quando o CPF (loggedUser) / CNPJ (businessEntity) não for cliente ou não possuir credencial válida/ativa para prosseguir no fluxo monitorado ou quando o HTTP response code for diferente de 201. • NO_AUTHORITY: quando o CPF (loggedUser) / CNPJ (businessEntity) consegue se autenticar, mas não dispõe de poderes ou alçadas para prosseguir no fluxo de compartilhamento de dados e serviços. • NO_AUTHORITY_PERSON_MISMATCH: quando o CPF (loggedUser) não possui relação com a credencial utilizada na etapa de autenticação do Hybrid Flow - exemplo: consentimento criado para um CPF e autenticado por outro; criado para um CNPJ e autenticado por CPF sem relação com o CNPJ. enum: - NO_AUTHORITY - NO_AUTHORITY_PERSON_MISMATCH - NO_CREDENTIAL, NONE example: NO_AUTHORITY ReportResponse: description: >- Representa os dados que serão retornados pelas operações de inclusão de reportes. additionalProperties: false required: - reportId - status type: object properties: reportId: description: Identificador único interno do reporte no formato UUID v4. type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: 9a97c2df-b261-4fc2-aa66-d1b5168397da status: type: string description: >- Informa o status do registro de reporte. DISCARDED: O status DISCARDED indica que o reporte enviado pelo participante foi rejeitado pela PCM. O motivo do descarte será enviado com a resposta, podendo ser por conta de um reporte inválido ou por um erro no processamento. Não é possível modificar um reporte DISCARDED, portanto o reportador deverá corrigir o registro que apresentou erro e reenviar via POST. ACCEPTED: O status ACCEPTED indica que a validação de formato do reporte não tem erros e este será enviado para processamento. enum: - DISCARDED - ACCEPTED example: ACCEPTED correlationId: description: >- Retorna o valor do atributo `correlationId` informado na solicitação de inclusão de reporte sem alteração. type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,100}$ maxLength: 100 example: uGQHwNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf2 message: description: >- Caso a solicitação contenha algum problema em seu formato, ou caso haja algum tipo de falha detectável no momento da requisição, esse campo trará detalhes sobre o erro ocorrido. Informações adicionais sobre os tipos de erros podem ser encontradas em [https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM) type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,200}$ maxLength: 200 example: 'Missing fields: ''fapiInteractionId'', ''endpoint''' ReportModel: type: object properties: reportId: type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ description: >- Identificador único do registro criado na Plataforma de Coleta de Métricas. pairedReportId: type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ description: >- Esse atributo indica o reportId do registro que forma uma correlação com o presente registro. Se essa informação existir, o status do registro atual deverá ser PAIRED status: type: string enum: - DISCARDED - SINGLE - ACCEPTED - UNPAIRED - PAIRED_INCONSISTENT - PAIRED description: >- Informa o status do registro de reporte. DISCARDED: O status DISCARDED indica que o reporte enviado pelo participante foi rejeitado pela PCM. O motivo do descarte será enviado com a resposta, podendo ser por conta de um reporte inválido ou por um erro no processamento. Não é possível modificar um reporte DISCARDED, portanto o reportador deverá corrigir o registro que apresentou erro e reenviar via POST. SINGLE: O status SINGLE indica que o reporte em questão não tem uma contraparte. Ele é utilizado em casos onde a conciliação entre dois reportes não é possível. ACCEPTED: O status ACCEPTED indica que a validação de formato do reporte não tem erros e este será enviado para processamento. UNPAIRED: O status UNPAIRED significa que o reporte atual não possui uma correspondência em outro reporte através do atributo fapiInteractionId. Indica um reporte divergente. PAIRED_INCONSISTENT: O status PAIRED_INCONSISTENT significa que o reporte corrente possui uma contraparte com o mesmo fapiInteractionId, mas os demais dados estão inconsistentes. Indica um reporte divergente. PAIRED: Indica que o reporte tem uma contraparte com o mesmo fapiInteractionId e os demais dados estão conciliados. Representa o estado final desejado em um fluxo correto. createdAt: type: string format: date-time maxLength: 28 description: Carimbo do tempo do momento da criação do registro updatedAt: type: string format: date-time maxLength: 28 description: Carimbo do tempo do momento da última atualização do registro description: Representa um reporte devidamente persistido. OpendataReportRequest: additionalProperties: false type: object required: - endpoint - statusCode - httpMethod - timestamp - processTimespan - additionalInfo properties: endpoint: type: string description: >- Identificação do endpoint que foi utilizado na transação reportada. A identificação do endpoint deve estar entre as entradas desse enum para ser considerado válido. Nesse campo não deve ser utilizado o path da requisição original, uma vez que ao comparar com os valores dessa enum, ele não será considerado válido. A lista de endpoints aceitos pela PCM pode ser encontrada em https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/1069350926/Endpoints+aceitos+pela+PCM example: /open-banking/opendata-acquiring-services/v1/businesses statusCode: description: Status de retorno HTTP da solicitação. type: integer format: int32 minimum: 200 maximum: 599 example: 200 httpMethod: type: string description: Método HTTP da solicitação. enum: - GET - POST - PUT - PATCH - DELETE example: GET timestamp: type: string description: >- Data/Hora UTC no formato ISO8601 com milissegundos (YYYY-MM-DDTHH:mm:ss.sssZ) do momento em que a chamada foi recebida. format: date-time maxLength: 28 pattern: >- ^\d{4}-\d{2}-\d{2}T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-][01]\d:[0-5]\d)$ example: '2021-11-11T18:08:08.421Z' processTimespan: type: number description: >- Tempo em milissegundos inteiros decorrido desde o recebimento do request até o momento imediatamente anterior ao envio do primeiro byte da resposta. example: 120.000001 additionalInfo: type: object properties: clientIp: type: string description: Endereço IP do cliente que efetuou a chamada description: >- Informações adicionais sobre o reporte deste endpoint/método. Possui característica variável. As regras de preenchimento estão na documentação funcional em [openfinancebrasil](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/37879861/Reporte#additionalInfo). Caso não exista o campo enviar como um objeto vazio: {} OpendataReportModel: type: object properties: reportId: type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ "createdAt\t": type: string format: date-time maxLength: 28 updatedAt: type: string format: date-time maxLength: 28 description: Representa um reporte devidamente persistido. ConsentsStockRequest: type: object properties: date: type: string description: >- Data UTC no formato ISO8601 (YYYY-MM-DD) do momento em que a chamada foi disparada, imediatamente antes do primeiro byte enviado na requisição. Deve conter a data a que se referem os dados de consentimento enviados na mensagem. format: date-time maxLength: 10 example: '2021-11-11' orgId: type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ description: >- Organização de envio da mensagem referente ao papel do Transmissor ou Receptor, conforme Role, a ser preenchido a partir do Certificado. example: c1ca8e62-9d6f-4ea3-84f2-d66bc0a8f7dc role: type: string description: >- ENUM indicando se o reporte que está sendo enviado apresenta a visão do SERVER ou do CLIENT. enum: - CLIENT - SERVER example: CLIENT scope: type: string enum: - DADOS description: Escopo do reporte, a se preenchido com a role 'Dados' example: DADOS totalCustomerPF: type: number description: >- Total de clientes PF com consentimentos ativos. Formato: Númerico inteiro natural example: 50 totalCustomerPJ: type: number description: >- Total de clientes PJ com consentimentos ativos. Formato: Númerico inteiro natural example: 100 consentsStockList: type: array items: type: object properties: clientOrgId: type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ description: Identificador da organização de onde a chamada foi disparada. example: d78fc4e5-37ca-4da3-adf2-9b082bf92280 serverOrgId: type: string description: Identificador da organização para onde a chamada foi feita. format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: c1ca8e62-9d6f-4ea3-84f2-d66bc0a8f7dc totalActiveConsents: type: number description: >- Estoque total de consentimentos ativos, correspondendo ao número de consentimentos totais válidos até a data de referência. example: 30 minItems: 1 required: - date - orgId - role - scope - consentsStockList ConsentStockResponse: type: object properties: reportId: type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ description: Identificador único interno do reporte no formato UUID v4. example: 9a97c2df-b261-4fc2-aa66-d1b5168397da status: type: string description: >+ Informa o status do registro de reporte. DISCARDED: O status DISCARDED indica que o reporte enviado pelo participante foi rejeitado pela PCM. O motivo do descarte será enviado com a resposta, podendo ser por conta de um reporte inválido ou por um erro no processamento. Não é possível modificar um reporte DISCARDED, portanto o reportador deverá corrigir o registro que apresentou erro e reenviar via POST. ACCEPTED: O status ACCEPTED indica que a validação de formato do reporte não tem erros e este será enviado para processamento. enum: - ACCEPTED - DISCARDED example: ACCEPTED message: type: string description: >- Caso a solicitação contenha algum problema em seu formato, ou caso haja algum tipo de falha detectável no momento da requisição, esse campo trará detalhes sobre o erro ocorrido. Informações adicionais sobre os tipos de erros podem ser encontradas em https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/46170119/Troubleshooting+-+PCM maxLength: 200 pattern: ^[- /:_.',0-9a-zA-Z]{0,200}$ example: 'Missing fields: ''orgId'', ''role''' required: - reportId - status CreditPortabilityClientRequest: type: object properties: timestamp: type: string description: >- Data/Hora UTC no formato ISO8601 com milissegundos (YYYY-MM-DDTHH:mm:ss.sssZ) do momento em que a chamada foi disparada, imediatamente antes do primeiro byte enviado na requisição. format: date-time pattern: >- ^\d{4}-\d{2}-\d{2}T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-][01]\d:[0-5]\d)$ example: '2021-11-11T18:08:08.278Z' fapiInteractionId: type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ description: >- O envio dessa informação é obrigatório, exceto nos casos onde ela não esteja disponível como, por exemplo, em respostas com status 5xx, ou em chamadas que terminaram por timeout onde o reporte tem que ser enviado, mas sem esse atributo. Nos demais cenários, o envio é obrigatório. example: d78fc4e5-37ca-4da3-adf2-9b082bf92280 clientSSId: type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ description: >- Identificador do software statement de onde a chamada foi disparada. A PCM garante que foi esta orgId que obteve o token de acesso utilizado neste reporte. example: 84570da9-567b-4201-9b77-c715bc5bffde clientOrgId: type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ description: Identificador da organização de onde a chamada foi disparada. example: c1ca8e62-9d6f-4ea3-84f2-d66bc0a8f7dc serverOrgId: type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ description: Identificador da organização para onde a chamada foi feita. example: c1ca8e62-9d6f-4ea3-84f2-d66bc0a8f7dc endpoint: type: string description: >- Identificação do endpoint que foi utilizado na transação reportada. A identificação do endpoint deve estar entre as entradas desse enum para ser considerado válido. Nesse campo não deve ser utilizado o path da requisição original, uma vez que ao comparar com os valores dessa enum, ele não será considerado válido. A lista de endpoints aceitos pela PCM pode ser encontrada em https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/1069350926/Endpoints+aceitos+pela+PCM example: /open-banking/consents/v2/consents statusCode: type: integer format: int32 minimum: 200 maximum: 599 description: Status de retorno HTTP da solicitação. example: 200 httpMethod: type: string description: Método HTTP da solicitação. enum: - GET - POST - PUT - DELETE - PATCH example: POST endpointUriPrefix: type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,200}$ maxLength: 200 description: >- Endereço do servidor de destino da chamada, incluindo o prefixo quando houver. O formato do campo deverá ser o seguinte: https://{host}/{prefixo}, sendo: host: endereço FQDN do servidor de destino prefixo: toda a parte do path que vem antes da string /open-banking example: https://openbanking.instituicao-1.com.br/opbk consentId: type: string description: Código identificador do pedido de portabilidade realizado. pattern: >- ^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$ maxLength: 100 example: urn:bancoex:C1DD33123 correlationId: type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,100}$ maxLength: 100 description: >- ID de correlação que identifica uma sequência de chamadas inter-relacionadas no ecossistema. Diferente do fapiInteractionId que serve para identificar cada par request-response (interação), o identificador de correlação serve para ligar diferentes reportes quando estes representam uma jornada ou uma sequência de chamadas. Este valor é de livre provimento pelo reportador. example: uGQHwNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf2 processTimespan: type: number description: >- Tempo em milissegundos inteiros decorrido desde o registro do timestamp até a chegada do primeiro byte da resposta do server. example: 120.000001 portabilityId: type: string description: Código identificador do pedido de portabilidade realizado. format: uuid maxLength: 100 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: 54d5348c-1a3f-4ff4-a8a8-d0724fb806c6 creationDateTime: type: string description: >- Data e hora em que a Proponente registrou a presente proposta (chamada ao POST /portabilities). Uma string com data e hora conforme especificação ISO8601, sempre com a utilização de timezone UTC-0 (UTC time format). pattern: >- ^\d{4}-\d{2}-\d{2}T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-][01]\d:[0-5]\d)$ example: '2020-07-21T08:30:00Z' creditPortabilityStatus: type: string description: >- Informação sobre o status de um pedido de portabilidade de crédito, onde: RECEIVED: Estado inicial. Indica que o pedido de portabilidade foi solicitado junto à instituição credora. O pedido deve permanecer neste estado até o próximo dia útil (D+1) onde começará a contar o prazo de 3 dias úteis para a etapa de contraproposta e o pedido de portabilidade deverá ser movido para PENDING PENDING: Indica que o pedido de portabilidade de crédito está na fase de contraproposta, onde a instituição credora poderá enviar uma contraproposta ou não para o cliente por qualquer canal (email, telefone, etc.) porém o aceite só deverá ser valido se o cliente aprovar no canal digital da instituição credora ACCEPTED_SETTLEMENT_IN_PROGRESS: Indica que a contraproposta não foi aceita pelo cliente e a instituição proponente terá que quitar o valor do contrato no mesmo dia em que o estado foi ativado. ACCEPTED_SETTLEMENT_COMPLETED: Indica que a instituição proponente já liquidou o contrato e comunicou a respeito à credora que está validando os dados do contrato bem como valores recebidos para a quitação do mesmo (nesta etapa a instituição credora tem 2 dias úteis para fornecer a confirmação e o recibo de quitação do contrato de empréstimo) PORTABILITY_COMPLETED: Indica que o pedido de portabilidade foi concluído com sucesso REJECTED: Indica que o pedido de portabilidade de crédito foi rejeitado, seja porque o cliente aceitou a contraproposta, ou porque a proponente rejeitou a liquidação que excedeu em 15% o valor do contrato original, entre outras possibilidades CANCELLED: Indica que o cliente cancelou o pedido de portabilidade de crédito PAYMENT_ISSUE: Indica que a Instituição Credora encontrou alguma inconsistência na liquidação efetuada e que a Instituição Proponente deverá realizar ajustes conforme sugerido pela Instituição Credora para solucionar a pendência antes do cancelamento do pedido de portabilidade de crédito enum: - RECEIVED - PENDING - ACCEPTED_SETTLEMENT_IN_PROGRESS - ACCEPTED_SETTLEMENT_COMPLETED - PORTABILITY_COMPLETED - REJECTED - CANCELLED - PAYMENT_ISSUE example: RECEIVED statusUpdateDateTime: type: string description: >- Data e hora em que o contrato teve o status atualizado. Uma string com data e hora conforme especificação ISO-8601, sempre com a utilização de timezone UTC(UTC time format). pattern: >- ^\d{4}-\d{2}-\d{2}T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-][01]\d:[0-5]\d)$ maxLength: 20 example: '2020-07-21T08:30:00Z' rejectionReason: type: string description: >- Motivo de recusa do pedido de portabilidade. Só será preenchido caso o status seja REJECTED, CANCELLED ou PAYMENT_ISSUE A consulta ao endpoint de GET é requerida para o fluxo de portabilidade example: CANCELADO_PELO_CLIENTE rejectedBy: type: string description: >- Informar usuário responsável pela rejeição da proposta, onde: PROPONENTE - Indica que o pedido de portabilidade de crédito foi rejeitado pela proponente, seja porque a proponente rejeitou a liquidação que excedeu em 15% o valor do contrato original, entre outras possibilidades. USUARIO - Indica que o cliente cancelou o pedido de portabilidade de crédito. CREDORA- Indica que a Instituição Credora cancelou o contrato por retenção do cliente ou outros motivos conforme motivo de recusa. Só será preenchido caso o status seja REJECTED ou CANCELLED enum: - PROPONENTE - USUARIO - CREDORA example: CREDORA errorCode: type: string description: >- Registra os códigos de erro detalhados de uma requisição que resultou em um erro HTTP (série 4xx ou 5xx). required: - timestamp - fapiInteractionId - clientSSId - clientOrgId - serverOrgId - endpoint - statusCode - httpMethod - endpointUriPrefix CreditPortabilityServerRequest: type: object properties: fapiInteractionId: type: string description: >- UUID que identifica uma transação específica entre dois participantes. Esse dado pode ser encontrado no header x-fapi-interaction-id que é informado pelo Client e devolvido pelo Server. Mais informações em Cabeçalhos HTTP na documentação do Open Finance Brasil. maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: d78fc4e5-37ca-4da3-adf2-9b082bf92280 endpoint: type: string description: >- Identificação do endpoint que foi utilizado na transação reportada. A identificação do endpoint deve estar presente na lista de endpoints aceitos pela PCM para ser considerado válido. Nesse campo não deve ser utilizado o path da requisição original. A lista de endpoints aceitos pela PCM pode ser encontrada em https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/43089921/Tabela+de+endpoints+aceitos+pela+PCM example: /open-banking/consents/v2/consents statusCode: type: integer format: int32 minimum: 200 maximum: 599 description: Status de retorno HTTP da solicitação. example: 200 httpMethod: type: string description: Método HTTP da solicitação. enum: - GET - POST - PUT - DELETE - PATCH example: POST correlationId: type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,100}$ maxLength: 100 description: >- ID de correlação que identifica uma sequência de chamadas inter-relacionadas no ecossistema. Diferente do fapiInteractionId que serve para identificar cada par request-response (interação), o identificador de correlação serve para ligar diferentes reportes quando estes representam uma jornada ou uma sequência de chamadas. Este valor é de livre provimento pelo reportador (não utilizado pelo SERVER) example: uGQHwNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf2 timestamp: type: string description: >- Data/Hora UTC no formato ISO8601 com milissegundos (YYYY-MM-DDTHH:mm:ss.sssZ) do momento em que a chamada foi disparada, imediatamente antes do primeiro byte enviado na requisição. format: date-time pattern: >- ^\d{4}-\d{2}-\d{2}T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-][01]\d:[0-5]\d)$ example: '2021-11-11T18:08:08.278Z' clientOrgId: type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ description: Identificador da organização de onde a chamada foi disparada. example: c1ca8e62-9d6f-4ea3-84f2-d66bc0a8f7dc serverOrgId: type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ description: Identificador da organização para onde a chamada foi feita. example: c1ca8e62-9d6f-4ea3-84f2-d66bc0a8f7dc portabilityId: type: string description: Código identificador do pedido de portabilidade realizado. format: uuid maxLength: 100 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: 54d5348c-1a3f-4ff4-a8a8-d0724fb806c6 consentId: type: string description: Código identificador do pedido de portabilidade realizado. pattern: >- ^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$ maxLength: 100 example: urn:bancoex:C1DD33123 statusUpdateDateTime: type: string description: >- Data e hora em que o contrato teve o status atualizado. Uma string com data e hora conforme especificação ISO-8601, sempre com a utilização de timezone UTC(UTC time format). pattern: >- ^\d{4}-\d{2}-\d{2}T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-][01]\d:[0-5]\d)$ example: '2020-07-21T08:30:00Z' processTimespan: type: number description: >- Tempo em milissegundos inteiros decorrido desde o registro do timestamp até a chegada do primeiro byte da resposta do server. example: 120.000001 rejectionReason: type: string description: >- Motivo de recusa do pedido de portabilidade. Só será preenchido caso o status seja REJECTED, CANCELLED ou PAYMENT_ISSUE A consulta ao endpoint de GET é requerida para o fluxo de portabilidade example: CANCELADO_PELO_CLIENTE rejectedBy: type: string description: >- Informar usuário responsável pela rejeição da proposta, onde: PROPONENTE - Indica que o pedido de portabilidade de crédito foi rejeitado pela proponente, seja porque a proponente rejeitou a liquidação que excedeu em 15% o valor do contrato original, entre outras possibilidades. USUARIO - Indica que o cliente cancelou o pedido de portabilidade de crédito. CREDORA- Indica que a Instituição Credora cancelou o contrato por retenção do cliente ou outros motivos conforme motivo de recusa. Só será preenchido caso o status seja REJECTED ou CANCELLED enum: - PROPONENTE - USUARIO - CREDORA example: CREDORA creditPortabilityStatus: type: string description: >- Informação sobre o status de um pedido de portabilidade de crédito, onde: RECEIVED: Estado inicial. Indica que o pedido de portabilidade foi solicitado junto à instituição credora. O pedido deve permanecer neste estado até o próximo dia útil (D+1) onde começará a contar o prazo de 3 dias úteis para a etapa de contraproposta e o pedido de portabilidade deverá ser movido para PENDING PENDING: Indica que o pedido de portabilidade de crédito está na fase de contraproposta, onde a instituição credora poderá enviar uma contraproposta ou não para o cliente por qualquer canal (email, telefone, etc.) porém o aceite só deverá ser valido se o cliente aprovar no canal digital da instituição credora ACCEPTED_SETTLEMENT_IN_PROGRESS: Indica que a contraproposta não foi aceita pelo cliente e a instituição proponente terá que quitar o valor do contrato no mesmo dia em que o estado foi ativado. ACCEPTED_SETTLEMENT_COMPLETED: Indica que a instituição proponente já liquidou o contrato e comunicou a respeito à credora que está validando os dados do contrato bem como valores recebidos para a quitação do mesmo (nesta etapa a instituição credora tem 2 dias úteis para fornecer a confirmação e o recibo de quitação do contrato de empréstimo) PORTABILITY_COMPLETED: Indica que o pedido de portabilidade foi concluído com sucesso REJECTED: Indica que o pedido de portabilidade de crédito foi rejeitado, seja porque o cliente aceitou a contraproposta, ou porque a proponente rejeitou a liquidação que excedeu em 15% o valor do contrato original, entre outras possibilidades CANCELLED: Indica que o cliente cancelou o pedido de portabilidade de crédito PAYMENT_ISSUE: Indica que a Instituição Credora encontrou alguma inconsistência na liquidação efetuada e que a Instituição Proponente deverá realizar ajustes conforme sugerido pela Instituição Credora para solucionar a pendência antes do cancelamento do pedido de portabilidade de crédito enum: - RECEIVED - PENDING - ACCEPTED_SETTLEMENT_IN_PROGRESS - ACCEPTED_SETTLEMENT_COMPLETED - PORTABILITY_COMPLETED - REJECTED - CANCELLED - PAYMENT_ISSUE example: RECEIVED errorCode: type: string description: Código de erro. required: - fapiInteractionId - endpoint - statusCode - httpMethod - timestamp - clientOrgId - serverOrgId CreditPortabilityModel: type: object properties: reportId: type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ description: >- Identificador único do registro criado na Plataforma de Coleta de Métricas. pairedReportId: type: string format: uuid maxLength: 36 pattern: >- pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ description: >- Esse atributo indica o reportId do registro que forma uma correlação com o presente registro. Se essa informação existir, o status do registro atual deverá ser PAIRED creditPortabilityStatus: type: string description: >- Informação sobre o status de um pedido de portabilidade de crédito, onde: RECEIVED: Estado inicial. Indica que o pedido de portabilidade foi solicitado junto à instituição credora. O pedido deve permanecer neste estado até o próximo dia útil (D+1) onde começará a contar o prazo de 3 dias úteis para a etapa de contraproposta e o pedido de portabilidade deverá ser movido para PENDING PENDING: Indica que o pedido de portabilidade de crédito está na fase de contraproposta, onde a instituição credora poderá enviar uma contraproposta ou não para o cliente por qualquer canal (email, telefone, etc.) porém o aceite só deverá ser valido se o cliente aprovar no canal digital da instituição credora ACCEPTED_SETTLEMENT_IN_PROGRESS: Indica que a contraproposta não foi aceita pelo cliente e a instituição proponente terá que quitar o valor do contrato no mesmo dia em que o estado foi ativado. ACCEPTED_SETTLEMENT_COMPLETED: Indica que a instituição proponente já liquidou o contrato e comunicou a respeito à credora que está validando os dados do contrato bem como valores recebidos para a quitação do mesmo (nesta etapa a instituição credora tem 2 dias úteis para fornecer a confirmação e o recibo de quitação do contrato de empréstimo) PORTABILITY_COMPLETED: Indica que o pedido de portabilidade foi concluído com sucesso REJECTED: Indica que o pedido de portabilidade de crédito foi rejeitado, seja porque o cliente aceitou a contraproposta, ou porque a proponente rejeitou a liquidação que excedeu em 15% o valor do contrato original, entre outras possibilidades CANCELLED: Indica que o cliente cancelou o pedido de portabilidade de crédito PAYMENT_ISSUE: Indica que a Instituição Credora encontrou alguma inconsistência na liquidação efetuada e que a Instituição Proponente deverá realizar ajustes conforme sugerido pela Instituição Credora para solucionar a pendência antes do cancelamento do pedido de portabilidade de crédito enum: - PENDING - RECEIVED - ACCEPTED_SETTLEMENT_IN_PROGRESS - ACCEPTED_SETTLEMENT_COMPLETED - PORTABILITY_COMPLETED - REJECTED - CANCELLED example: RECEIVED createdAt: type: string format: date-time maxLength: 28 description: Carimbo do tempo do momento da criação do registro updatedAt: type: string format: date-time maxLength: 28 description: Carimbo do tempo do momento da última atualização do registro status: type: string description: >- Informa o status do registro de reporte. DISCARDED: O status DISCARDED indica que o reporte enviado pelo participante foi rejeitado pela PCM. O motivo do descarte será enviado com a resposta, podendo ser por conta de um reporte inválido ou por um erro no processamento. Não é possível modificar um reporte DISCARDED, portanto o reportador deverá corrigir o registro que apresentou erro e reenviar via POST. SINGLE: O status SINGLE indica que o reporte em questão não tem uma contraparte. Ele é utilizado em casos onde a conciliação entre dois reportes não é possível. ACCEPTED: O status ACCEPTED indica que a validação de formato do reporte não tem erros e este será enviado para processamento. UNPAIRED: O status UNPAIRED significa que o reporte atual não possui uma correspondência em outro reporte através do atributo fapiInteractionId. Indica um reporte divergente. PAIRED_INCONSISTENT: O status PAIRED_INCONSISTENT significa que o reporte corrente possui uma contraparte com o mesmo fapiInteractionId, mas os demais dados estão inconsistentes. Indica um reporte divergente. PAIRED: Indica que o reporte tem uma contraparte com o mesmo fapiInteractionId e os demais dados estão conciliados. Representa o estado final desejado em um fluxo correto. HybridFlowClientRedirectToServerReportRequest: description: '' type: array minItems: 0 maxItems: 1000 items: type: object required: - consentId - platform - osVersion - os - timestamp - clientOrgId properties: consentId: type: string pattern: >- ^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$ maxLength: 256 description: >- O consentId deve ser preenchido com a mesma string do identificador único de um fluxo de consentimento de dados, de pagamento ou de vínculo example: urn:bancoex:C1DD33123 uriAuthorizationEndpoint: type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,200}$ maxLength: 200 description: >- Endpoint utilizado para o redirecionamento do usuário conforme cadastrado pela transmissora/detentora no arquivo .well-known/openid-configuration sem qualquer parâmetro introduzido pelo sistema da receptora/iniciadora. Caso a URI tenha mais de 200 caracteres de extensão, truncar. example: https://auth.banco.com.br/open-banking/Auth platform: type: string enum: - BROWSER - APP description: Identifica a plataforma utilizada example: BROWSER osVersion: type: string description: Sistema Operacional utilizado example: '20.04' os: type: string description: Versão do Sistema Operacional utilizado enum: - LINUX - MACOS - UNIX - IOS - ANDROID - OTHER - WINDOWS example: LINUX timestamp: type: string description: >- Data/Hora UTC no formato ISO8601 com milissegundos (YYYY-MM-DDTHH:mm:ss.sssZ) do momento em que a chamada foi disparada, imediatamente antes do primeiro byte enviado na requisição. maxLength: 28 format: date-time pattern: >- ^\d{4}-\d{2}-\d{2}T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-][01]\d:[0-5]\d)$ example: '2021-11-11T18:08:08.278Z' clientOrgId: description: >- A ser enviado vazio caso o report seja da mesma instituição que obteve o token para uso da PCM e, caso contrário, deve ser preenchido com o organasationId da instituição filha para o qual a instituição mãe está fazendo o report. type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: 56411f7e-d58b-44a8-8a2b-ff326d3f2955 HybridFlowServerRedirectTargetReportRequest: description: UNIX type: array minItems: 0 maxItems: 1000 items: type: object required: - consentId - osVersion - os - type - timestamp - serverOrgId properties: consentId: type: string pattern: >- ^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$ maxLength: 256 description: >- O consentId deve ser preenchido com a mesma string do identificador único de um fluxo de consentimento de dados, de pagamento ou de vínculo exemplos: pós POST /open-banking/payments/v4/consents utilizar a string obtida/enviada em data.consentId pós POST /open-banking/consents/v3/consents utilizar a string obtida/enviada em data.consentId pós POST /automatic-payments/v1/recurring-consents utilizar a string obtida/enviada em data.recurringConsentId pós POST /automatic-payments/v1/pix/recurring-payments utilizar a string obtida/enviada em data.recurringConsentId pós POST /open-banking/enrollments/v1/enrollments utilizar a string obtida/enviada em data.enrollmentId example: urn:bancoex:C1DD33123 uriAuthorizationEndpoint: type: string pattern: 'pattern: ^[- /:_.'',0-9a-zA-Z]{0,200}$' maxLength: 200 description: >- Endpoint utilizado para o redirecionamento do usuário conforme cadastrado pela transmissora/detentora no arquivo .well-known/openid-configuration sem qualquer parâmetro introduzido pelo sistema da receptora/iniciadora. Caso a URI tenha mais de 200 caracteres de extensão, truncar. example: https://auth.banco.com.br/open-banking/Auth osVersion: type: string description: Versão do Sistema Operacional utilizado example: '20.04' os: type: string enum: - LINUX - MACOS - UNIX - WINDOWS - IOS - ANDROID - OTHER description: Sistema Operacional utilizado example: LINUX type: type: string enum: - AWAITING_HANDOFF - AWAITING_USER_AUTH - AWAITING_REDIRECT_TO_APP description: Tipo do fluxo de Hybridflow timestamp: type: string description: >- Data/Hora UTC no formato ISO8601 com milissegundos (YYYY-MM-DDTHH:mm:ss.sssZ) do momento em que a chamada foi disparada, imediatamente antes do primeiro byte enviado na requisição. format: date-time maxLength: 28 pattern: >- ^\d{4}-\d{2}-\d{2}T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-][01]\d:[0-5]\d)$ example: '2021-11-11T18:08:08.278Z' serverOrgId: description: >- A ser enviado vazio caso o report seja da mesma instituição que obteve o token para uso da PCM e, caso contrário, deve ser preenchido com o organasationId da instituição filha para o qual a instituição mãe está fazendo o report. type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: c1ca8e62-9d6f-4ea3-84f2-d66bc0a8f7dc HybridFlowServerAuthenticatedRequest: description: '' type: array minItems: 0 maxItems: 1000 items: type: object required: - consentId - platform - osVersion - os - timestamp - serverOrgId properties: consentId: type: string pattern: >- ^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$ maxLength: 256 description: >- O consentId deve ser preenchido com a mesma string do identificador único de um fluxo de consentimento de dados, de pagamento ou de vínculo exemplos: pós POST /open-banking/payments/v4/consents utilizar a string obtida/enviada em data.consentId pós POST /open-banking/consents/v3/consents utilizar a string obtida/enviada em data.consentId pós POST /automatic-payments/v1/recurring-consents utilizar a string obtida/enviada em data.recurringConsentId pós POST /automatic-payments/v1/pix/recurring-payments utilizar a string obtida/enviada em data.recurringConsentId pós POST /open-banking/enrollments/v1/enrollments utilizar a string obtida/enviada em data.enrollmentId example: urn:bancoex:C1DD33123 platform: type: string enum: - BROWSER - APP description: Identifica a plataforma utilizada example: BROWSER osVersion: type: string description: Versão do Sistema Operacional utilizado example: '20.04' os: type: string description: Sistema Operacional utilizado enum: - LINUX - MACOS - UNIX - IOS - ANDROID - OTHER - WINDOWS example: LINUX timestamp: type: string description: >- Data/Hora UTC no formato ISO8601 com milissegundos (YYYY-MM-DDTHH:mm:ss.sssZ) do momento em que a chamada foi disparada, imediatamente antes do primeiro byte enviado na requisição. maxLength: 28 format: date-time pattern: >- ^\d{4}-\d{2}-\d{2}T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-][01]\d:[0-5]\d)$ example: '2021-11-11T18:08:08.278Z' serverOrgId: description: >- A ser enviado vazio caso o report seja da mesma instituição que obteve o token para uso da PCM e, caso contrário, deve ser preenchido com o organasationId da instituição filha para o qual a instituição mãe está fazendo o report. type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: c1ca8e62-9d6f-4ea3-84f2-d66bc0a8f7dc HybridFlowServerRedirectTargetWithoutErrorsRequest: description: '' type: array minItems: 0 maxItems: 1000 items: type: object required: - consentId - platform - osVersion - os - timestamp - clientOrgId properties: consentId: type: string pattern: >- ^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$ maxLength: 256 description: >- O consentId deve ser preenchido com a mesma string do identificador único de um fluxo de consentimento de dados, de pagamento ou de vínculo exemplos: pós POST /open-banking/payments/v4/consents utilizar a string obtida/enviada em data.consentId pós POST /open-banking/consents/v3/consents utilizar a string obtida/enviada em data.consentId pós POST /automatic-payments/v1/recurring-consents utilizar a string obtida/enviada em data.recurringConsentId pós POST /automatic-payments/v1/pix/recurring-payments utilizar a string obtida/enviada em data.recurringConsentId pós POST /open-banking/enrollments/v1/enrollments utilizar a string obtida/enviada em data.enrollmentId example: urn:bancoex:C1DD33123 platform: type: string enum: - BROWSER - APP description: Identifica a plataforma utilizada example: BROWSER osVersion: type: string description: Versão do Sistema Operacional utilizado example: '20.04' os: type: string description: Sistema Operacional utilizado enum: - LINUX - MACOS - UNIX - IOS - ANDROID - OTHER - WINDOWS example: LINUX timestamp: type: string description: >- Data/Hora UTC no formato ISO8601 com milissegundos (YYYY-MM-DDTHH:mm:ss.sssZ) do momento em que a chamada foi disparada, imediatamente antes do primeiro byte enviado na requisição. maxLength: 28 format: date-time pattern: >- ^\d{4}-\d{2}-\d{2}T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-][01]\d:[0-5]\d)$ example: '2021-11-11T18:08:08.278Z' clientOrgId: description: >- A ser enviado vazio caso o report seja da mesma instituição que obteve o token para uso da PCM e, caso contrário, deve ser preenchido com o organasationId da instituição filha para o qual a instituição mãe está fazendo o report. type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: 56411f7e-d58b-44a8-8a2b-ff326d3f2955 HybridFlowServerRedirectTargetWithErrorsRequest: description: '' type: array minItems: 0 maxItems: 1000 items: type: object required: - consentId - platform - osVersion - os - error - timestamp - clientOrgId properties: consentId: type: string pattern: >- ^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$ maxLength: 256 description: >- O consentId deve ser preenchido com a mesma string do identificador único de um fluxo de consentimento de dados, de pagamento ou de vínculo exemplos: pós POST /open-banking/payments/v4/consents utilizar a string obtida/enviada em data.consentId pós POST /open-banking/consents/v3/consents utilizar a string obtida/enviada em data.consentId pós POST /automatic-payments/v1/recurring-consents utilizar a string obtida/enviada em data.recurringConsentId pós POST /automatic-payments/v1/pix/recurring-payments utilizar a string obtida/enviada em data.recurringConsentId pós POST /open-banking/enrollments/v1/enrollments utilizar a string obtida/enviada em data.enrollmentId example: urn:bancoex:C1DD33123 platform: type: string enum: - BROWSER - APP description: Identifica a plataforma utilizada example: BROWSER osVersion: type: string description: Versão do Sistema Operacional utilizado example: '20.04' os: type: string description: Sistema Operacional utilizado enum: - LINUX - MACOS - UNIX - IOS - ANDROID - OTHER - WINDOWS example: LINUX error: type: string description: Código de erro retornado no payload do Hybrid Flow example: Código de erro retornado no payload do Hybrid Flow timestamp: type: string description: >- Data/Hora UTC no formato ISO8601 com milissegundos (YYYY-MM-DDTHH:mm:ss.sssZ) do momento em que a chamada foi disparada, imediatamente antes do primeiro byte enviado na requisição. maxLength: 28 format: date-time pattern: >- ^\d{4}-\d{2}-\d{2}T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-][01]\d:[0-5]\d)$ example: '2021-11-11T18:08:08.278Z' clientOrgId: description: >- A ser enviado vazio caso o report seja da mesma instituição que obteve o token para uso da PCM e, caso contrário, deve ser preenchido com o organasationId da instituição filha para o qual a instituição mãe está fazendo o report. type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: 56411f7e-d58b-44a8-8a2b-ff326d3f2955 HybridFlowServerRedirectToClientRequest: description: '' type: array minItems: 0 maxItems: 1000 items: type: object required: - consentId - uri_callback - platform - osVersion - os - type - timestamp - serverOrgId properties: consentId: type: string pattern: >- ^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$ maxLength: 256 description: >- O consentId deve ser preenchido com a mesma string do identificador único de um fluxo de consentimento de dados, de pagamento ou de vínculo exemplos: pós POST /open-banking/payments/v4/consents utilizar a string obtida/enviada em data.consentId pós POST /open-banking/consents/v3/consents utilizar a string obtida/enviada em data.consentId pós POST /automatic-payments/v1/recurring-consents utilizar a string obtida/enviada em data.recurringConsentId pós POST /automatic-payments/v1/pix/recurring-payments utilizar a string obtida/enviada em data.recurringConsentId pós POST /open-banking/enrollments/v1/enrollments utilizar a string obtida/enviada em data.enrollmentId example: urn:bancoex:C1DD33123 uri_callback: type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,200}$ maxLength: 200 format: uri description: >- URI específico fornecido como endpoint de retorno de chamada. Preencher com a uri_callback registrada pelo sistema consumidor durante o DCR/DCM. Caso a URI tenha mais de 200 caracteres de extensão, truncar. example: https://receptora.com.br/open-banking/landing-page platform: type: string enum: - BROWSER - APP description: Identifica a plataforma utilizada example: BROWSER osVersion: type: string description: Versão do Sistema Operacional utilizado example: '20.04' os: type: string description: Sistema Operacional utilizado enum: - LINUX - MACOS - UNIX - IOS - ANDROID - OTHER - WINDOWS example: LINUX type: type: string enum: - AUTHORISED - REJECTED description: Tipo do fluxo de Hybridflow timestamp: type: string description: >- Data/Hora UTC no formato ISO8601 com milissegundos (YYYY-MM-DDTHH:mm:ss.sssZ) do momento em que a chamada foi disparada, imediatamente antes do primeiro byte enviado na requisição. maxLength: 28 format: date-time pattern: >- ^\d{4}-\d{2}-\d{2}T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-][01]\d:[0-5]\d)$ example: '2021-11-11T18:08:08.278Z' serverOrgId: description: >- A ser enviado vazio caso o report seja da mesma instituição que obteve o token para uso da PCM e, caso contrário, deve ser preenchido com o organasationId da instituição filha para o qual a instituição mãe está fazendo o report. type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: c1ca8e62-9d6f-4ea3-84f2-d66bc0a8f7dc HybridFlowReportResponse: additionalProperties: false required: - reportId type: array items: type: object properties: reportId: description: Identificador único interno do reporte no formato UUID v4. type: string format: uuid maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ example: 9a97c2df-b261-4fc2-aa66-d1b5168397da description: >- Representa os dados que serão retornados pelas operações de inclusão de reportes. GenericError: description: Representa uma resposta de erro genérica. type: object additionalProperties: false properties: message: type: string pattern: ^[- /:_.',0-9a-zA-Z]{0,200}$ maxLength: 200 SecurityResponse: type: object properties: statusCode: type: integer description: Status de retorno HTTP da solicitação. minimum: 200 maximum: 599 example: 200 access_token: type: string expires_in: type: integer refresh_expires_in: type: string token_type: type: string not-before-policy: type: integer scope: type: string required: - statusCode - access_token - expires_in - refresh_expires_in - token_type - not-before-policy - scope PaymentStatusRequest: type: object properties: eventDateTime: type: string description: >- Data e hora associados à mudança de estados finais reportados, como liquidação, rejeição ou cancelamento. Deve ser informado em UTC-0. format: date-time maxLength: 28 example: '2025-08-18T00:00:00Z' consentId: type: string description: Identificador único do consentimento criado para aquele pagamento. maxLength: 100 pattern: ^[- /:_.',0-9a-zA-Z]{0,100}$ example: uGQHwNupARo7I9E2PLJZph18a0M9y7DcUe7ITt3DqUOJd9NVjnskxf2 clientOrgId: type: string description: >- Identificador da organização cliente que realizou ou solicitou o pagamento. maxLength: 36 format: uuid example: d78fc4e5-37ca-4da3-adf2-9b082bf92280 paymentId: type: string description: Código único para identificar a transação de pagamento. pattern: ^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$ example: d78fc4e5-37ca-4da3-adf2-9b082bf92280 paymentStatus: type: string description: Status de agendamento ou final do pagamento enum: - ACSC - RJCT - CANC - SCHD example: ACSC paymentType: type: string description: Tipo do pagamento realizado. enum: - IMMEDIATE - RECURRENT - SWEEPING - AUTOMATIC - SCHEDULED example: RECURRENT statusReasonCode: type: string description: >- Campo atrelado ao status do pagamento. Quando o status for RJCT (Rejected), o valor deve ser preenchido com o motivo da rejeição (valores previstos em rejectionReason.Code). Quando o status for CANC (Cancelled), o valor deve ser preenchido com motivo do cancelamento (valores previstos em cancellationReason.Code). required: - eventDateTime - consentId - paymentId - paymentStatus - paymentType - clientOrgId PaymentStatusGetResponse: allOf: - $ref: '#/components/schemas/PaymentStatusRequest' - type: object properties: reportId: type: string description: >- Identificador único do registro criado na Plataforma de Coleta de Métricas. createdAt: type: string format: date-time description: Carimbo do tempo do momento da criação do registro status: type: string enum: - ACCEPTED - DISCARDED description: >- Informa o status do registro de reporte. DISCARDED: O status DISCARDED indica que o reporte enviado pelo participante foi rejeitado pela PCM. O motivo do descarte será enviado com a resposta, podendo ser por conta de um reporte inválido ou por um erro no processamento. Não é possível modificar um reporte DISCARDED, portanto o reportador deverá corrigir o registro que apresentou erro e reenviar via POST. SINGLE: O status SINGLE indica que o reporte em questão não tem uma contraparte. Ele é utilizado em casos onde a conciliação entre dois reportes não é possível. ACCEPTED: O status ACCEPTED indica que a validação de formato do reporte não tem erros e este será enviado para processamento. UNPAIRED: O status UNPAIRED significa que o reporte atual não possui uma correspondência em outro reporte através do atributo fapiInteractionId. Indica um reporte divergente. PAIRED_INCONSISTENT: O status PAIRED_INCONSISTENT significa que o reporte corrente possui uma contraparte com o mesmo fapiInteractionId, mas os demais dados estão inconsistentes. Indica um reporte divergente. PAIRED: Indica que o reporte tem uma contraparte com o mesmo fapiInteractionId e os demais dados estão conciliados. Representa o estado final desejado em um fluxo correto. example: ACCEPTED required: - reportId - createdAt - status PaymentStatusResponse: type: object properties: reportId: type: string paymentId: type: string pattern: ^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$ status: type: string message: type: string required: - reportId - paymentId - status responses: Default429Error: description: '' content: application/json: schema: $ref: '#/components/schemas/GenericError' examples: NotAccetable: summary: NotAccetable value: message: Too Many Requests Default400Error: description: '' content: application/json: schema: $ref: '#/components/schemas/GenericError' examples: Bad Request: summary: Bad Request value: message: 'Invalid payload format: MUST be an array' Default401Error: description: '' content: application/json: schema: $ref: '#/components/schemas/GenericError' examples: NotAuthorized: summary: NotAuthorized value: message: Unauthorized Default403Error: description: '' content: application/json: schema: $ref: '#/components/schemas/GenericError' examples: Forbidden: summary: Forbidden value: message: Forbidden Default406Error: description: '' content: application/json: schema: $ref: '#/components/schemas/GenericError' examples: NotAccetable: summary: NotAccetable value: message: Content type not accepted Default415Error: description: '' content: application/json: schema: $ref: '#/components/schemas/GenericError' examples: NotAccetable: summary: NotAccetable value: message: Unsupported Media Type Default500Error: description: '' content: application/json: schema: $ref: '#/components/schemas/GenericError' examples: InternalServerError: summary: InternalServerError value: message: Internal Server Error Record not found: description: '' content: application/json: schema: type: object properties: message: type: string required: - message examples: Example 1: summary: Example 1 value: message: Not Found Invalid input: description: '' content: application/json: schema: type: object properties: message: type: string required: - message examples: Example 1: summary: Example 1 value: message: Bad Request securitySchemes: PCMAccessToken: description: Token de acesso JWT para autenticação nas APIs da PCM. type: http scheme: bearer bearerFormat: JWT bearer: type: http scheme: bearer servers: [] security: []