openapi: 3.0.1 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 que identifica uma transação específica entre dois participantes. Esse dado pode ser encontrado no header x-fapi-interaction-id informado pelo Client e devolvido pelo Server. Mais informações em [Cabeçalhos HTTP](https://openbanking-brasil.github.io/areadesenvolvedor/#cabecalhos-http) na documentação do Open Finance Brasil. O envio dessa informação é obrigatório, exceto nos casos ontem 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. 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. 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. 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: description: >- Tempo em milissegundos inteiros decorrido desde o registro do timestamp até a chegada do primeiro byte da resposta do server. type: integer format: int16 example: 120 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: 1. 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`. 1. 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` 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: 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 type: string personType: 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" type: string 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: 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. Deve ser preenchido com a mesma string obtida no ".data.status" type: string 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: 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. type: string webhookEnable: 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 booleano 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 booleano FALSE type: string webhookInteractionId: description: >- Caso o GET esteja sendo feito após o estímulo do webhook, o x-webhook-interaction-id deverá ser indicado type: string enrollmentId: 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". type: string authenticatorAttachment: 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". type: string platform: description: >- Deve ser preenchido com a mesma string definida em ".data.platform" type: string rp: description: >- Relying Party" (RP) onde reside originalmente na requisição FIDO. Deve ser preenchido com a mesma string definida em ".data.rp" type: string rejectionReasonCode: 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" type: string rejectionReasonDetail: 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" type: string authorisationFlow: 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" type: string 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. enum: - IMMEDIATE - SCHEDULED - RECURRENT - SWEEPING - AUTOMATIC 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 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 cancelledFrom: type: string description: >- Identifica origem da rejeição ou revogação de um vínculo de dispositivo. enum: - INICIADORA - DETENTORA interval: type: string description: >- Periodicidade que a recorrência foi definida (semanal, trimestral, anual...)​. Regras: Preencher com o valor do campo "interval"​ 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​. enum: - FIXO - VARIAVEL isFirstPayment: type: string description: Valida se o serviço possui um pagamento associado na adesão. enum: - "TRUE" - "FALSE" hasMinimumAmount: type: string description: >- Valida se possui o valor mínimo definido pelo usuário recebedor​. enum: - "TRUE" - "FALSE" 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: Preencher com o valor do campo "isRetryAccepted"​ recurringPaymentId: type: string description: >- Contagem de acionamentos feitos no pagamento Regras: Para Pagamentos v4: Preencher com o valor do campo "/data/paymentId" Para Pagamentos Automáticos v2: Preencher com o valor do campo "/data/recurringPaymentId"​ paymentReference: type: string description: >- Identifica a referência do pagamento no tempo (semanal, mensal, trimestral...). Regras:​ Preencher com o valor do campo "paymentReference" originalRecurringPaymentId: type: string description: >- Identifica o primeiro pagamento da recorrência em relação as retentativas​. Regras: Preencher com o valor do campo "originalRecurringPaymentId"​ cancellationReason: type: string description: >- Identifica o estado que o pagamento estava quando foi cancelado​. Regras: Preencher com o valor do campo "cancellation.reason" nfcPayment: type: string description: |- Indica se o pagamento foi realizado via NFC. Regras: Preencher com o valor do campo "nfcPayment" enum: - "TRUE" - "FALSE" revocationReasonCode: description: |- Código indicador do motivo da revogação 1. Envio obrigatório para as roles Server e Client type: string revocationReasonDetail: description: |- Detalhe sobre o motivo de revogação indicado no campo 1. Envio obrigatório para a role Server e Client type: string 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 enum: - INICIADORA - DETENTORA rejectedBy: type: string description: |- Quem iniciou a solicitação de rejeição 1. Envio obrigatório para a role Server e Client enum: - NICIADORA - USUARIO - DETENTORA rejectedFrom: type: string description: |- Canal onde iniciou-se o processo de rejeição 1. Envio obrigatório para a role Server e Client enum: - INICIADORA - DETENTORA statusSummary: type: object properties: available: type: string description: Disponível unavailable: type: string description: Indisponível temporarilyUnavailable: type: string description: Temporariamente indisponível pendingAuthorisation: type: string description: Pendente de autorização description: Sumarização das quantidades de reportes por status companyProfileInfo: type: object properties: naturezaJurídica: type: string description: Natureza jurídica porteEmpresa: type: string description: Porte do empresa description: Porte do client PJ e natureza jurídica paymentDate: type: string description: Data em que o pagamento será realizado. example: "2025-09-01" paymentSchedule: type: string description: >- Estrutura responsável pela parametrização dos pagamentos que acontecerão sob aquele consentimento 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: 4d4dec4b-5960-4041-8099-1340b8c8a4bb statusUpdateDateTime: type: string description: >- Data e hora da última atualização da iniciação de pagamento. example: "2025-09-01" 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: "001" 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 agendamentos recorrentes minItems: 0 maxItems: 60 recurringPaymentDate: type: string description: Data em que o pagamento será realizado referenceStartDate: type: string description: >- Data prevista para o início do ciclo de cobrança dos pagamentos associados à recorrência title: "" example: "2025-09-01" recurringConsentId: type: string description: Autorizar o consentimento para pix automáticos journeyIsLinked: type: string description: >- indica que o consentimento é vinculado a outro em Jornada Otimizada journeyLinkId: type: string description: >+ Identifica o consentimento de dados vinculado a uma Jornada Otimizada. Deve ser preenchido com a mesma string enviada ou recebida no campo “.data.journey.linkId”, retornado após a chamada inicial na API “POST /enrollments” em caso de Jornada Otimizada. authorisationFlowIntent: type: string description: >- Identificar o fluxo de autorização através do campo adicional de intenção do fluxo de autorizaçã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. 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: - fapiInteractionId - endpoint - statusCode - httpMethod - timestamp - processTimespan - clientOrgId - serverOrgId - role properties: fapiInteractionId: 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](https://openbanking-brasil.github.io/areadesenvolvedor/#cabecalhos-http) na documentação do Open Finance Brasil. 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. 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: description: >- Tempo em milissegundos inteiros decorrido desde o registro do timestamp até a finalização do envio dos dados. type: integer format: int16 example: 120 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: description: >- Data/Hora UTC no formato ISO8601 com milissegundos (YYYY-MM-DDTHH:mm:ss.sssZ) do momento em que a chamada foi recebida. type: string format: date-time maxLength: 28 example: "2021-11-11T18:08:08.421Z" processTimespan: description: >- Tempo em milissegundos inteiros decorrido desde o recebimento do request até o momento imediatamente anterior ao envio do primeiro byte da resposta. type: integer format: int16 example: 120 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. No caso de ocorrer um timeout client side preencher com um código 403 (conforme documentaçã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 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: integer description: >- Tempo em milissegundos inteiros decorrido desde o registro do timestamp até a chegada do primeiro byte da resposta do server. example: 120 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. No caso de ocorrer um timeout client side preencher com um código 403 (conforme documentaçã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 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: integer description: >- Tempo em milissegundos inteiros decorrido desde o registro do timestamp até a chegada do primeiro byte da resposta do server. example: 120 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 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 format: date-time maxLength: 28 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. 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 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 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 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 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: Qual o status da resposta da api. 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. 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}$ maxLength: 36 format: uuid example: d78fc4e5-37ca-4da3-adf2-9b082bf92280 paymentId: type: string description: Código único para identificar a transação de pagamento. 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 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: code: type: integer message: type: string required: - code - message Invalid input: description: "" content: application/json: schema: type: object properties: code: type: integer message: type: string required: - code - message 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: []