﻿openapi: 3.0.0
info:
  title: API Enrollments for Payment Initiation - Open Finance Brasil
  description: |
    Família de API para permitir o pagamento sem redirecionamento via Open Finance Brasil.  
    Permite tanto o gerenciamento dos dispositivos vinculados as contas quanto a autorização de consentimentos criados via fluxo sem redirecionamento.
    
  version: 2.0.0-beta.1
  license:
    name: Apache 2.0
    url: 'https://www.apache.org/licenses/LICENSE-2.0'
  contact:
    name: Governança do Open Finance Brasil – Especificações
    email: squad-jornada@openfinancebrasil.org.br
    url: 'https://openfinancebrasil.atlassian.net/wiki/spaces/OF'
servers:
  - url: 'https://mtls-api.banco.com.br/open-banking/enrollments/v2'
    description: Servidor de Produção
  - url: 'https://mtls-api.hml.banco.com.br/open-banking/enrollments/v2'
    description: Servidor de Homologação
tags:
  - name: Vínculo de dispositivo
    description: Gerenciamento dos dispositivos vinculados as contas
  - name: Consentimento
    description: Autorização de consentimentos criados via fluxo sem redirecionamento.
paths:
  /enrollments:
    post:
      tags:
        - Vínculo de dispositivo
      summary: Criar vínculo de conta.
      operationId: postEnrollments
      description: |
        Método para criar um novo vínculo de conta. Retorna um enrollment em status AWAITING_RISK_SIGNALS.  
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
        - $ref: '#/components/parameters/XIdempotencyKey'
      requestBody:
        required: true
        description: Payload para criação de vínculo de conta.
        content:
          application/jwt:
            schema:
              $ref: '#/components/schemas/CreateEnrollment'
      responses:
        '201':
          $ref: '#/components/responses/201EnrollmentsCreated'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenEnrollments'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '406':
          $ref: '#/components/responses/NotAcceptable'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '422':
          $ref: '#/components/responses/UnprocessableEntityEnrollment'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '529':
          $ref: '#/components/responses/SiteIsOverloaded'
        default:
          description: Erro inesperado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2ClientCredentials:
            - payments
  '/enrollments/{enrollmentId}':
    get:
      tags:
        - Vínculo de dispositivo
      summary: Consultar vínculo de conta.
      operationId: getEnrollment
      description: Método para consultar um vínculo de conta para iniciação de pagamento sem redirecionamento.
      parameters:
        - $ref: '#/components/parameters/enrollmentId'
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
      responses:
        '200':
          $ref: '#/components/responses/200EnrollmentsEnrollmentIdRead'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '406':
          $ref: '#/components/responses/NotAcceptable'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '529':
          $ref: '#/components/responses/SiteIsOverloaded'
        default:
          description: Erro inesperado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2ClientCredentials:
            - payments
    patch:
      tags:
        - Vínculo de dispositivo
      summary: Revogar ou rejeitar vínculo de conta.
      operationId: deleteEnrollment
      description: |
        Método para revogar ou rejeitar um vínculo de conta. Após a execução com sucesso deste método irreversível, o vínculo de conta
        não poderá mais ser utilizado para autenticação nem autorização de iniciação de pagamentos.
        Os conceitos de revogação e rejeição estão associados à máquina de estados do vínculo de conta\:
        
        • Revogação: Cancelamento de um vínculo de conta no status "AUTHORISED";
        
        • Rejeição: Cancelamento do vínculo de conta nos status "AWATING_RISK_SIGNALS", "AWATING_ENROLLMENT" e "AWAITING_ACCOUNT_HOLDER_VALIDATION"
        
        Cabe ao cliente desta API distinguir entre os dois cenários para determinar o motivo adequado.
      parameters:
        - $ref: '#/components/parameters/enrollmentId'
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
        - $ref: '#/components/parameters/XIdempotencyKey'
      requestBody:
        required: true
        description: Dados para regovação do vínculo de conta.
        content:
          application/jwt:
            schema:
              type: object
              required:
                - data
              properties:
                data:
                  type: object
                  required:
                    - cancellation
                  description: |
                    Objeto que agrupa as informações de qual foi o usuário logado que solicitou o cancelamento do vínculo de conta.
                  properties:
                    cancellation:
                      type: object
                      required:
                        - reason
                      properties:
                        cancelledBy:
                          type: object
                          description: |
                            Informação relacionada ao usuário pagador que solicitou o cancelamento do vínculo de conta.
                            Pode estar ausente em cenários de processos automatizados realizarem o cancelamento do vínculo, por exemplo, por data de expiração.
                          required:
                            - document
                          properties:
                            document:
                              type: object
                              description: Objeto que consolida os dados do documento do usuário que solicitou o cancelamento.
                              required:
                                - identification
                                - rel
                              properties:
                                identification:
                                  type: string
                                  maxLength: 11
                                  description: Número do documento do usuário responsável pelo cancelamento do vínculo de conta.
                                  example: '11111111111'
                                  pattern: '^\d{11}$'
                                rel:
                                  type: string
                                  maxLength: 3
                                  description: Tipo do documento do usuário responsável pelo cancelamento do vínculo de conta.
                                  example: CPF
                                  pattern: '^[A-Z]{3}$'
                        reason:
                          oneOf:
                            - type: object
                              required:
                              - rejectionReason
                              description: Motivo da rejeição do vínculo de conta.
                              properties:
                                rejectionReason:
                                  $ref: '#/components/schemas/EnrollmentRejectionReason'
                            - type: object
                              required:
                              - revocationReason
                              description: Motivo da revogação do vínculo de conta.
                              properties:
                                revocationReason:
                                  $ref: '#/components/schemas/EnrollmentRevocationReason'
                        additionalInformation:
                          type: string
                          pattern: '[\w\W\s]*'
                          example: Contrato entre iniciadora e detentora interrompido
                          maxLength: 2048
      responses:
        '204':
          $ref: '#/components/responses/204EnrollmentsEnrollmentIdDelete'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '406':
          $ref: '#/components/responses/NotAcceptable'
        '422':
          $ref: '#/components/responses/UnprocessableEntityEnrollmentCancel'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '529':
          $ref: '#/components/responses/SiteIsOverloaded'
        default:
          description: Erro inesperado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2ClientCredentials:
            - payments
  '/enrollments/{enrollmentId}/fido-registration-options':
    post:
      tags:
        - Vínculo de dispositivo
      summary: Obter parâmetros para criação de credenciais FIDO2.
      operationId: enrollmentCreateFidoRegistrationOptions
      description: |
        Método para obter os parâmetros para criação de uma nova credencial FIDO2. Um novo challenge deve ser criado a cada chamada.
        Os parâmetros da resposta devem ser compatíveis com a definição [W3C](https://www.w3.org/TR/webauthn-2/#dictionary-makecredentialoptions)
      parameters:
        - $ref: '#/components/parameters/enrollmentId'
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
        - $ref: '#/components/parameters/XIdempotencyKey'
      requestBody:
        required: true
        description: Payload para criação de parâmetros de registro de nova credencial FIDO2.
        content:
          application/jwt:
            schema:
              $ref: '#/components/schemas/EnrollmentFidoOptionsInput'
      responses:
        '201':
          $ref: '#/components/responses/201EnrollmentFidoRegistrationOptions'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '406':
          $ref: '#/components/responses/NotAcceptable'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '422':
          $ref: '#/components/responses/UnprocessableEntityEnrollmentFidoRegistrationOptions'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '529':
          $ref: '#/components/responses/SiteIsOverloaded'
        default:
          description: Erro inesperado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2AuthorizationCode:
            - openid
            - 'enrollment:enrollmentId'
            - payments
  '/enrollments/{enrollmentId}/fido-registration':
    post:
      tags:
        - Vínculo de dispositivo
      summary: Associação da credencial FIDO2 ao vínculo de conta.
      operationId: enrollmentRegisterFidoCredential
      description: |
        O vínculo de conta deve estar no status "AWAITING_ENROLLMENT". 
        Após o registro com sucesso, o vínculo de conta deve transitar ao status "AUTHORISED".
        A falha de verificação da credencial FIDO2 deve causar a rejeição do vínculo de conta por parte da detentora, uma vez que não é possível reusar um mesmo "challenge" para mais de um registro.
      parameters:
        - $ref: '#/components/parameters/enrollmentId'
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
        - $ref: '#/components/parameters/XIdempotencyKey'
      requestBody:
        required: true
        description: Payload para criação de parâmetros de registro de nova credencial FIDO2.
        content:
          application/jwt:
            schema:
              $ref: '#/components/schemas/EnrollmentFidoRegistration'
      responses:
        '204':
          $ref: '#/components/responses/204EnrollmentsFidoRegistration'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '406':
          $ref: '#/components/responses/NotAcceptable'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '422':
          $ref: '#/components/responses/UnprocessableEntityEnrollmentFidoRegistration'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '529':
          $ref: '#/components/responses/SiteIsOverloaded'
        default:
          description: Erro inesperado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2AuthorizationCode:
            - openid
            - 'enrollment:enrollmentId'
            - payments
  /enrollments/{enrollmentId}/fido-sign-options:
    post:
      tags:
        - Vínculo de dispositivo
      summary: Obter parâmetros para autenticação FIDO2.
      operationId: enrollmentCreateFidoSigningOptions
      description: |
        Método para obter os parâmetros para autenticação a partir de uma credencial FIDO2 previamente registrada. Um novo challenge deve ser criado a cada chamada.
        Os parâmetros da resposta devem ser compatíveis com a [definição W3C](https://www.w3.org/TR/webauthn-2/#dictionary-assertion-options)
      parameters:
        - $ref: '#/components/parameters/enrollmentId'
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
        - $ref: '#/components/parameters/XIdempotencyKey'
      requestBody:
        required: true
        description: Payload para autenticação a partir de uma credencial FIDO2 previamente registrada.
        content:
          application/jwt:
            schema:
              type: object
              required:
                - data
              properties:
                data:
                  type: object
                  description: |
                    Objeto que contém as informações sobre a Relying Party e a plataforma sobre a qual o usuário está utilizando o serviço da iniciadora para utilização de FIDO2.
                  required:
                    - rp
                    - platform
                    - consentId
                  properties:
                    rp:
                      type: string
                      description: Identificador único da Relying Party, que corresponde ao valor do CN do certificado de transporte da iniciadora.
                    platform:
                      type: string
                      description: |
                        Indica a plataforma em que o usuário criará a nova credencial FIDO2. 
                        Este campo permite que o servidor FIDO inclua extensões de acordo com a plataforma utilizada.
                      enum:
                        - ANDROID
                        - BROWSER
                        - CROSS_PLATFORM
                        - IOS
                    consentId:
                      $ref: '#/components/schemas/consentId'
      responses:
        '201':
          $ref: '#/components/responses/201EnrollmentFidoSignOptions'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '406':
          $ref: '#/components/responses/NotAcceptable'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '422':
          $ref: '#/components/responses/UnprocessableEntityEnrollmentFidoSignOptions'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '529':
          $ref: '#/components/responses/SiteIsOverloaded'
        default:
          description: Erro inesperado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2ClientCredentials:
            - payments
  /enrollments/{enrollmentId}/risk-signals:
    post:
      tags:
        - Vínculo de dispositivo
      summary: Envio de sinais de risco para iniciação do vínculo de dispositivo
      operationId: riskSignals
      description: |
        Envio de sinais de risco para iniciação do vínculo de dispositivo, o status do enrollment deve estar em `AWAITING_RISK_SIGNALS`. Após recebimento com sucesso dos sinais, o status do enrollment deve transitar para `AWAITING_ACCOUNT_HOLDER_VALIDATION`.
      parameters:
        - $ref: '#/components/parameters/enrollmentId'
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
        - $ref: '#/components/parameters/XIdempotencyKey'
      requestBody:
        required: true
        description: Payload para criação de vínculo de conta.
        content:
          application/jwt:
            schema:
              $ref: '#/components/schemas/RiskSignals'
      responses:
        '204':
          $ref: '#/components/responses/204EnrollmentsRiskSignals'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '406':
          $ref: '#/components/responses/NotAcceptable'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '422':
          $ref: '#/components/responses/UnprocessableEntityEnrollmentRiskSignals'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '529':
          $ref: '#/components/responses/SiteIsOverloaded'
        default:
          description: Erro inesperado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2ClientCredentials:
            - payments
  /consents/{consentId}/authorise:
    post:
      tags:
        - Consentimento
      summary: Autorização de um consentimento de pagamentos na jornada sem redirecionamento
      operationId: authorizeConsent
      description: |
        Autorização de um consentimento de pagamentos em status `AWAITING_AUTHORISATION` a partir do access_token emitido pela jornada sem redirecionamento e envio de sinais de risco.  
        Caso o consentimento possua múltiplos aprovadores, deve ser movido para `PARTIALLY_ACCEPTED` após a primeira aprovação, até que todas as aprovações necessárias sejam coletadas e ele transite para `AUTHORISED`.  
        Caso de aprovação única, o consentimento deve transitar, pós autorização, direto para `AUTHORISED`.
        Em caso de falha em algum dos cenários, o status do consentimento do pagamento precisa transitar para o status `REJECTED`.
      parameters:
        - $ref: '#/components/parameters/consentId'
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
        - $ref: '#/components/parameters/XIdempotencyKey'
      requestBody:
        required: true
        description: Payload para criação de vínculo de conta.
        content:
          application/jwt:
            schema:
              $ref: '#/components/schemas/ConsentAuthorization'
      responses:
        '204':
          $ref: '#/components/responses/204PaymentsConsentsAuthorized'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '406':
          $ref: '#/components/responses/NotAcceptable'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '422':
          $ref: '#/components/responses/UnprocessableEntityConsentsAuthorization'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '529':
          $ref: '#/components/responses/SiteIsOverloaded'
        default:
          description: Erro inesperado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseError'
      security:
        - OAuth2AuthorizationCode:
          - openid
          - 'enrollment:enrollmentId'
          - payments
          - nrp-consents
components:
  headers:
    xFapiInteractionId:
        description: |
          Um UUID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela iniciadora (client) e o seu valor deve ser “espelhado” pela detentora (server) no cabeçalho de resposta.
        schema:
          $ref: '#/components/schemas/XFapiInteractionId'
    xFapiInteractionIdBadRequest:
        description: |
          Um UUID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela iniciadora (client) e o seu valor deve ser "espelhado" pela detentora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a detentora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP status code 400. A iniciadora deve acatar o valor recebido da detentora.
        schema:
          $ref: '#/components/schemas/XFapiInteractionId'
  schemas:
    422ResponseErrorCreateEnrollment:
      type: object
      required:
        - errors
        - meta
      properties:
        errors:
          type: array
          minItems: 1
          items:
            type: object
            required:
              - code
              - title
              - detail
            properties:
              code:
                type: string
                enum:
                  - PERMISSOES_INVALIDAS
                  - CONTA_INVALIDA
                example: PERMISSOES_INVALIDAS
                description: |
                  Códigos de erros previstos na criação do vínculo de conta:
                  
                  • PERMISSOES_INVALIDAS: As permissões associadas ao vínculo de conta não contêm "PAYMENTS_INITIATE".
                  
                  • CONTA_INVALIDA: A conta informada inexiste ou não é compatível com o fluxo de não-redirecionamento.
              title:
                type: string
                maxLength: 255
                pattern: '[\w\W\s]*'
                example: Permissões inválidas
                description: |
                  Título específico do erro reportado, de acordo com o código enviado:
                  
                  • PERMISSOES_INVALIDAS: Permissões inválidas.
                  
                  • CONTA_INVALIDA: Conta inválida.
              detail:
                type: string
                maxLength: 2048
                pattern: '[\w\W\s]*'
                example: 'Permissões inválidas'
                description: |
                  Descrição específica do erro de acordo com o código reportado:
                  
                  • PERMISSOES_INVALIDAS: As permissões associadas ao vínculo de conta não contêm "PAYMENTS_INITIATE" ou contêm valores não suportados para esta operação.  
                  
                  • CONTA_INVALIDA: A conta informada inexiste ou não é compatível com o fluxo de não-redirecionamento.
        meta:
          $ref: '#/components/schemas/Meta'
    422ResponseErrorCancelEnrollment:
      type: object
      required:
        - errors
        - meta
      properties:
        errors:
          type: array
          minItems: 1
          items:
            type: object
            required:
              - code
              - title
              - detail
            properties:
              code:
                type: string
                enum:
                  - STATUS_INVALIDO
                  - MOTIVO_REJEICAO
                  - REJEITADO_OUTRO_SEM_DETALHES
                  - MOTIVO_REVOGACAO
                  - REVOGADO_OUTRO_SEM_DETALHES
                example: STATUS_INVALIDO
                description: |
                  Códigos de erros previstos no cancelamento do vínculo de conta:

                  • STATUS_INVALIDO: O status do vínculo de conta não permite cancelamento.
                  
                  • MOTIVO_REJEICAO: A rejeição do vínculo de conta exige um motivo associado.
                  
                  • REJEITADO_OUTRO_SEM_DETALHES: O uso do motivo REJEITADO_OUTRO, deve estar acompanhado de descrição (additionalInformation).
                  
                  • MOTIVO_REVOGACAO: A revogação do vínculo de conta exige um motivo associado.
                  
                  • REVOGADO_OUTRO_SEM_DETALHES: O uso do motivo REVOGADO_OUTRO deve estar acompanhado de descrição (additionalInformation)
              title:
                type: string
                maxLength: 255
                pattern: '[\w\W\s]*'
                example: Permissões inválidas
                description: |
                  Título específico do erro reportado, de acordo com o código enviado:

                  • STATUS_INVALIDO: Status inválido.
                  
                  • MOTIVO_REJEICAO: Motivo de rejeição não especificado.

                  • REJEITADO_OUTRO_SEM_DETALHES: O campo additionalInformation é obrigatório.

                  • MOTIVO_REVOGACAO: Motivo de revogação não especificado.

                  • REVOGADO_OUTRO_SEM_DETALHES: O campo additionalInformation é obrigatório.
              detail:
                type: string
                maxLength: 2048
                pattern: '[\w\W\s]*'
                example: 'Permissões inválidas'
                description: |
                  Descrição específica do erro de acordo com o código reportado:

                  • STATUS_INVALIDO: O status do vínculo de conta não permite cancelamento.
                  
                  • MOTIVO_REJEICAO: A rejeição do vínculo de conta deve estar associada a um motivo de rejeição.

                  • REJEITADO_OUTRO_SEM_DETALHES: O uso do motivo REJEITADO_OUTRO, deve estar acompanhado de descrição (additionalInformation).

                  • MOTIVO_REVOGACAO: A revogação do vínculo de conta deve estar associada a um motivo de revogação.

                  • REVOGADO_OUTRO_SEM_DETALHES: O uso do motivo REVOGADO_OUTRO deve estar acompanhado de descrição (additionalInformation)
        meta:
          $ref: '#/components/schemas/Meta'
    422ResponseErrorFidoRegistrationOptions:
      type: object
      required:
        - errors
        - meta
      properties:
        errors:
          type: array
          minItems: 1
          items:
            type: object
            required:
              - code
              - title
              - detail
            properties:
              code:
                type: string
                enum:
                  - RP_INVALIDA
                  - STATUS_VINCULO_INVALIDO
                example: STATUS_VINCULO_INVALIDO
                description: |
                  Códigos de erros previstos:

                  • RP_INVALIDA: O identificador da Relying Party informado não pode ser verificado.
                  
                  • STATUS_VINCULO_INVALIDO: O status do vínculo de conta é tal que não permite o registro de nova credencial.
              title:
                type: string
                maxLength: 255
                pattern: '[\w\W\s]*'
                example: Permissões inválidas
                description: |
                  Título específico do erro reportado, de acordo com o código enviado:

                  • RP_INVALIDA: Relying party inválida.
                  
                  • STATUS_VINCULO_INVALIDO: Status do vínculo de conta inválido.
              detail:
                type: string
                maxLength: 2048
                pattern: '[\w\W\s]*'
                example: 'Permissões inválidas'
                description: |
                  Descrição específica do erro de acordo com o código reportado:

                  • RP_INVALIDA: O identificador da Relying Party informado não pode ser verificado.
                  
                  • STATUS_VINCULO_INVALIDO: O status do vínculo de conta é tal que não permite o registro de nova credencial.
        meta:
          $ref: '#/components/schemas/Meta'
    422ResponseErrorRiskSignals:
      type: object
      required:
        - errors
        - meta
      properties:
        errors:
          type: array
          minItems: 1
          items:
            type: object
            required:
              - code
              - title
              - detail
            properties:
              code:
                type: string
                enum:
                  - STATUS_VINCULO_INVALIDO
                example: STATUS_VINCULO_INVALIDO
                description: |
                  Códigos de erros previstos:

                  - STATUS_VINCULO_INVALIDO: O status do vínculo de conta é incompatível com a operação.
              title:
                type: string
                maxLength: 255
                pattern: '[\w\W\s]*'
                example: Permissões inválidas
                description: |
                  Título específico do erro reportado, de acordo com o código enviado:

                  - STATUS_VINCULO_INVALIDO: Status do vínculo de conta inválido.
              detail:
                type: string
                maxLength: 2048
                pattern: '[\w\W\s]*'
                example: 'Permissões inválidas'
                description: |
                  Descrição específica do erro de acordo com o código reportado:

                  - STATUS_VINCULO_INVALIDO: O status do vínculo de conta é incompatível com a operação.
        meta:
          $ref: '#/components/schemas/Meta'
    422ResponseErrorFidoSignOptions:
      type: object
      required:
        - errors
        - meta
      properties:
        errors:
          type: array
          minItems: 1
          items:
            type: object
            required:
              - code
              - title
              - detail
            properties:
              code:
                type: string
                enum:
                  - RP_INVALIDA
                  - STATUS_VINCULO_INVALIDO
                  - STATUS_CONSENTIMENTO_INVALIDO
                example: STATUS_VINCULO_INVALIDO
                description: |
                  Códigos de erros previstos:

                  • RP_INVALIDA: O identificador da Relying Party informado não pode ser verificado.
                  
                  • STATUS_VINCULO_INVALIDO: O status do vínculo de conta é tal que não permite assinatura. 
                  
                  • STATUS_CONSENTIMENTO_INVALIDO: O status do consentimento não permite autorização.
              title:
                type: string
                maxLength: 255
                pattern: '[\w\W\s]*'
                example: Permissões inválidas
                description: |
                  Título específico do erro reportado, de acordo com o código enviado:

                  • RP_INVALIDA: Relying party inválida.
                  
                  • STATUS_VINCULO_INVALIDO: Status do vínculo de conta inválido.
                  
                  • STATUS_CONSENTIMENTO_INVALIDO: Status do consentimento de pagamento inválido.
              detail:
                type: string
                maxLength: 2048
                pattern: '[\w\W\s]*'
                example: 'Permissões inválidas'
                description: |
                  Descrição específica do erro de acordo com o código reportado:

                  • RP_INVALIDA: O identificador da Relying Party informado não pode ser verificado.
                  
                  • STATUS_VINCULO_INVALIDO: O status do vínculo de conta é tal que não permite assinatura. 
                  
                  • STATUS_CONSENTIMENTO_INVALIDO: O status do consentimento não permite autorização.
        meta:
          $ref: '#/components/schemas/Meta'
    422ResponseErrorFidoRegistration:
      type: object
      required:
        - errors
        - meta
      properties:
        errors:
          type: array
          minItems: 1
          items:
            type: object
            required:
              - code
              - title
              - detail
            properties:
              code:
                type: string
                enum:
                  - STATUS_VINCULO_INVALIDO
                  - ORIGEM_FIDO_INVALIDA
                  - RP_ID_HASH_INVALIDO
                  - CHALLENGE_INVALIDO
                  - PUBLIC_KEY_INVALIDA
                  - EXTENSION_INVALIDA
                example: STATUS_VINCULO_INVALIDO
                description: |
                  Códigos de erros previstos:

                  • STATUS_VINCULO_INVALIDO: O status do vínculo de conta é tal que não permite o registro de nova credencial.
                  
                  • ORIGEM_FIDO_INVALIDA: O valor contido no campo [response.clientDataJSON.origin](https://www.w3.org/TR/webauthn-2/#dom-authenticatorresponse-clientdatajson) não pode ser verificado. 
                  
                  • RP_INVALIDA: O valor contido no campo [data.response.attestationObject.authData.rpIdHash](https://www.w3.org/TR/webauthn-2/#sctn-authenticator-data) não pode ser verificado. 
                  
                  • CHALLENGE_INVALIDO: O campo [response.clientDataJSON.challenge](https://www.w3.org/TR/webauthn-2/#dom-authenticatorresponse-clientdatajson) possui valor codificado diferente do valor gerado pelo servidor.
                  
                  • PUBLIC_KEY_INVALIDA: A chave pública enviada é incompatível com as definições do servidor FIDO2.
                  
                  • EXTENSION_INVALIDA: As extensões extraídas são incompatíveis com as diretrizes de segurança do servidor FIDO2.
              title:
                type: string
                maxLength: 255
                pattern: '[\w\W\s]*'
                example: Permissões inválidas
                description: |
                  Título específico do erro reportado, de acordo com o código enviado:

                  • STATUS_VINCULO_INVALIDO: Status inválido do vínculo de conta.
                  
                  • ORIGEM_FIDO_INVALIDA: "Origin" não pode ser verificada. 
                  
                  • RP_INVALIDA: "RpIdHash" não pode ser verificado.
                  
                  • CHALLENGE_INVALIDO: Challenge inválido.
                  
                  • PUBLIC_KEY_INVALIDA: Chave pública inválida.
                  
                  • EXTENSION_INVALIDA: Extensões inválidas.
              detail:
                type: string
                maxLength: 2048
                pattern: '[\w\W\s]*'
                example: 'Permissões inválidas'
                description: |
                  Descrição específica do erro de acordo com o código reportado:

                  • STATUS_VINCULO_INVALIDO: O status do vínculo de conta é tal que não permite o registro de nova credencial.
                  
                  • ORIGEM_FIDO_INVALIDA: O valor contido no campo [response.clientDataJSON.origin](https://www.w3.org/TR/webauthn-2/#dom-authenticatorresponse-clientdatajson) não pode ser verificado.
                  
                  • RP_INVALIDA: O valor contido no campo [response.attestationObject.authData.rpIdHash](https://www.w3.org/TR/webauthn-2/#sctn-authenticator-data) não pode ser verificado.
                  
                  • CHALLENGE_INVALIDO: O campo [response.clientDataJSON.challenge](https://www.w3.org/TR/webauthn-2/#dom-authenticatorresponse-clientdatajson) possui valor codificado diferente do valor gerado pelo servidor.
                  
                  • PUBLIC_KEY_INVALIDA: A chave pública enviada é incompatível com as definições do servidor FIDO2.
                  
                  • EXTENSION_INVALIDA: As extensões extraídas são incompatíveis com as diretrizes de segurança do servidor FIDO2.
        meta:
          $ref: '#/components/schemas/Meta'
    422ResponseConsentsAuthorization:
      type: object
      required:
        - errors
        - meta
      properties:
        errors:
          type: array
          minItems: 1
          items:
            type: object
            required:
              - code
              - title
              - detail
            properties:
              code:
                type: string
                enum:
                  - STATUS_VINCULO_INVALIDO
                  - STATUS_CONSENTIMENTO_INVALIDO
                  - RISCO
                  - FALTAM_SINAIS_OBRIGATORIOS_DA_PLATAFORMA
                example: STATUS_VINCULO_INVALIDO
                description: |
                  Códigos de erros previstos:

                  • STATUS_VINCULO_INVALIDO: O vínculo de conta não possui status AUTHORISED.
                  
                  • STATUS_CONSENTIMENTO_INVALIDO: O consentimento de pagamentos não possui status AWAITING_AUTHORISATION.
                  
                  • RISCO: Validação síncrona dos sinais de risco impediram a ativação do consentimento.                  
                  
                  • FALTAM_SINAIS_OBRIGATORIOS_DA_PLATAFORMA: Os sinais obrigatórios para a plataforma do usuário não foram enviados em sua totalidade.
              title:
                type: string
                maxLength: 255
                pattern: '[\w\W\s]*'
                example: Permissões inválidas
                description: |
                  Título específico do erro reportado, de acordo com o código enviado:

                  • STATUS_VINCULO_INVALIDO: Status do vínculo de conta inválido.
                  
                  • STATUS_CONSENTIMENTO_INVALIDO: Status do consentimento inválido.
                  
                  • RISCO: Validação síncrona dos sinais de risco impediram a ativação do consentimento.
                  
                  • FALTAM_SINAIS_OBRIGATORIOS_DA_PLATAFORMA: Falta de sinais obrigatórios para a plataforma do usuário.
              detail:
                type: string
                maxLength: 2048
                pattern: '[\w\W\s]*'
                example: 'Permissões inválidas'
                description: |
                  Descrição específica do erro de acordo com o código reportado:

                  • STATUS_VINCULO_INVALIDO: O vínculo de conta não possui status AUTHORISED.
                  
                  • STATUS_CONSENTIMENTO_INVALIDO: O consentimento de pagamentos não possui status AWAITING_AUTHORISATION.
                  
                  • RISCO: Validação síncrona dos sinais de risco impediram a ativação do consentimento.
                  
                  • FALTAM_SINAIS_OBRIGATORIOS_DA_PLATAFORMA: Os sinais obrigatórios para a plataforma do usuário não foram enviados em sua totalidade.
        meta:
          $ref: '#/components/schemas/Meta'
    BusinessEntity:
      type: object
      description: 'Usuário (pessoa jurídica) que encontra-se logado na iniciadora. [Restrição] Preenchimento obrigatório se usuário logado na iniciadora for um CNPJ (pessoa jurídica).'
      required:
        - document
      properties:
        document:
          type: object
          required:
            - identification
            - rel
          properties:
            identification:
              type: string
              maxLength: 14
              description: Número do documento de identificação oficial do titular pessoa jurídica.
              example: '11111111111111'
              pattern: '^\d{14}$'
            rel:
              type: string
              maxLength: 4
              description: Tipo do documento de identificação oficial do titular pessoa jurídica.
              example: CNPJ
              pattern: '^[A-Z]{4}$'
    CreateEnrollment:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          description: Objeto contendo as informações para criação de vínculo de conta.
          required:
            - loggedUser
            - permissions
          properties:
            loggedUser:
              $ref: '#/components/schemas/LoggedUser'
            permissions:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/EnumEnrollmentPermission'
            businessEntity:
              $ref: '#/components/schemas/BusinessEntity'
            debtorAccount:
              $ref: '#/components/schemas/DebtorAccount'
    RiskSignals:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          description: Informa a integridade do dispositivo e app
          required:
            - deviceId
            - isRootedDevice
            - screenBrightness
            - elapsedTimeSinceBoot
            - osVersion
            - userTimeZoneOffset
            - language
            - screenDimensions
            - accountTenure
          properties:
            deviceId:
              type: string
              description: |
                ID único do dispositivo gerado pela plataforma.

                Utiliza-se a propriedade do sistema que identifica a combinação de usuário logado, chave de assinatura do aplicativo e dispositivo.

                [Android] Informação obtida através do [link](https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID).

                [iOS] Informação obtida através do [link](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor/).
              example: 00aa11bb22cc33dd
            isRootedDevice:
              type: boolean
              description: Indica se o dispositivo atualmente está com permissão de “root”.
              example: false
            screenBrightness:
              type: number
              format: double
              description: |
               Indica o nível de brilho da tela do dispositivo.

               [Android] O valor é inteiro, tipicamente entre 0 a 255, podendo a faixa de valores variar de acordo com o fabricante do celular. Referência no [link](https://developer.android.com/reference/android/provider/Settings.System#SCREEN_BRIGHTNESS).

               [iOS] O valor é ponto flutuante entre “0.0” e “1.0”. Referência no [link](https://developer.apple.com/documentation/uikit/uiscreen/).
              example: 255
            elapsedTimeSinceBoot:
              type: integer
              format: int64
              description: |
                Indica por quanto tempo (em milissegundos) o dispositivo está ligado.

                [Android] Informação obtida através do [link](https://developer.android.com/reference/android/os/SystemClock#elapsedRealtime%28%29).

                [iOS] Informação obtida através do [link](https://developer.apple.com/documentation/kernel/kern/).
              example: 6356027
            osVersion:
              type: string
              description: |
                Versão do sistema operacional.

                [Android] Informação obtida através do [link](https://developer.android.com/reference/android/os/Build.VERSION#RELEASE).
                [iOS] - Informação obtida através do [link](https://developer.apple.com/documentation/uikit/uidevice/1620043-systemversion/).
              example: "14"
            userTimeZoneOffset:
              type: string
              description: |
                Indica a configuração de fuso horário do dispositivo do usuário, com o formato UTC offset: ±hh[:mm]. O formato especificado permite a omissão da parte correspondente aos minutos, caso esta última tenha valor zero. Assim, ambos os valores '-03:00' e '-03' são válidos e representam o mesmo fuso horário.

                [Android] Informação obtida através do [link](https://developer.android.com/reference/java/time/ZonedDateTime#getOffset()) ou, para versões anteriores à 8.0, [link](https://developer.android.com/reference/java/util/TimeZone#getOffset(long)).

                [iOS] Informação obtida através do [link](https://developer.apple.com/documentation/foundation/timezone/).
              example: '-03'
            language:
              type: string
              description: |
                Indica o idioma do dispositivo no formato ISO 639-1.

                [Android] Informação obtida através do [link](https://developer.android.com/reference/java/util/Locale#getLanguage()).
                [iOS] - Informação obtida através do [link](https://developer.apple.com/documentation/foundation/locale/languagecode/).
              example: 'pt'
            screenDimensions:
              type: object
              description: |
                	
                Dimensões que o aplicativo ocupa na tela do dispositivo.

                [Android] Informação obtida através do [link](https://developer.android.com/reference/android/view/WindowMetrics#getBounds()), ou, para versões anteriores à 11, [link](https://developer.android.com/reference/android/util/DisplayMetrics).

                [iOS] - Informação obtida através do [link](https://developer.apple.com/documentation/metal/mtlrasterizationratemap/3088873-screensize/).
              required:
                - height
                - width
              properties:
                height:
                  type: integer
                  description: Altura da tela, em pixels.
                  example: 2340
                width:
                  type: integer
                  description: Largura da tela, em pixels.
                  example: 1080
            accountTenure:
              type: string
              format: date
              pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$'
              description: Data de cadastro do cliente na iniciadora.
              example: "2023-08-20"
            geolocation:
              type: object
              description: |
                Localização do usuário, obtida com seu consentimento.

                [Android] Informação obtida através do [link](https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderClient#public-abstract-tasklocation-getlastlocation) considerando as permissões necessárias.

                [iOS] Informação obtida através do [link](https://developer.apple.com/documentation/corelocation/).

                [Restrição] A ITP deve solicitar ao usuário a permissão para compartilhamento de sua localização. Este campo poderá ser omitido caso o GPS esteja indisponível, isto é, sem sinal, ou em dispositivos sem o hardware necessário; ou caso o usuário negue o consentimento.
              properties:
                latitude:
                  type: number
                  example: -15.738602
                longitude:
                  type: number
                  example: -47.926498
                type:
                  type: string
                  enum:
                    - COARSE
                    - FINE
                    - INFERRED
                  example: FINE
            isCallingProgress:
              type: boolean
              description: |
                Indica chamada ativa no momento do vínculo.

                [Android] Informação obtida através do [link](https://developer.android.com/reference/android/media/AudioManager#getMode()).

                [iOS] Informação obtida através do [link](https://developer.apple.com/documentation/callkit/).

                [Restrição] Caso o sinal de risco esteja disponível (cliente permitiu que fosse coletado), o mesmo deverá ser enviado
              example: false
            isDevModeEnabled:
              type: boolean
              description: Indica se o dispositivo está em modo de desenvolvedor.
              example: false
            isMockGPS:
              type: boolean
              description: |
                Indica se o dispositivo está usando um GPS falso. Deve ser enviado sempre que exista o campo geolocation com tipo `COARSE` ou `FINE`.

                [Android] Informação obtida através do [link](https://developer.android.com/reference/android/location/Location.html#isMock()) ou, para versões anteriores à 12, [link](https://developer.android.com/reference/android/location/Location.html#isFromMockProvider()).

                [iOS] Informação obtida através dos links:
                sourceInformation, [link](https://developer.apple.com/documentation/corelocation/cllocation/3861803-sourceinformation).
                isSimulatedBySoftware, [link](https://developer.apple.com/documentation/corelocation/cllocationsourceinformation/3861807-issimulatedbysoftware).
              example: false
            isEmulated:
              type: boolean
              description: Indica se o dispositivo é emulado ou real.
              example: false
            isMonkeyRunner:
              type: boolean
              description: Indica o uso do MonkeyRunner.
              example: false
            isCharging:
              type: boolean
              description: |
                Indica se a bateria do dispositivo está sendo carregada.

                [Android] Informação obtida através do [link](https://developer.android.com/reference/android/os/BatteryManager).

                [iOS] Informações obtida através do [link](https://developer.apple.com/documentation/uikit/uidevice/1620045-batterymonitoringenabled/).
              example: false
            antennaInformation:
              type: string
              description: Indica em qual antena o dispositivo está conectado.
              example: "CellIdentityLte:{ mCi=2******60 mPci=274 mTac=5***1 mEarfcn=9510 mBands=[28] mBandwidth=2147483647 mMcc=724 mMnc=10 mAlphaLong=VIVO mAlphaShort=VIVO mAdditionalPlmns={} mCsgInfo=null}, CellIdentityLte:{ mCi=1*****01 mPci=361 mTac=3***6 mEarfcn=9410 mBands=[28] mBandwidth=2147483647 mMcc=724 mMnc=03 mAlphaLong=TIMBRASIL mAlphaShort=TIMBRASIL mAdditionalPlmns={} mCsgInfo=null}"
            isUsbConnected:
              type: boolean
              description: Indica se o dispositivo está conectado a outro dispositivo via USB.
              example: false
            integrity:
              type: object
              description: |
                Informa a integridade do dispositivo e app.

                [Android] Conforme documentação Play API Integrity, [link](https://developer.android.com/google/play/integrity/overview?hl=pt-br).

                [iOS] Conforme documentação App Attest, [link](https://developer.apple.com/documentation/devicecheck/establishing-your-app-s-integrity).
              properties:
                appRecognitionVerdict:
                  type: string
                  description: Informa a integridade do app
                  example: "PLAY_RECOGNIZED"
                deviceRecognitionVerdict:
                  type: string
                  description: Informa a integridade do dispositivo
                  example: '[\"MEETS_DEVICE_INTEGRITY\"]'
    ConsentAuthorization:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          description: Objeto que contém sinais de risco e o id do vínculo de conta para avaliação da autorização de um consentimento de pagamento.
          required:
            - enrollmentId
            - riskSignals
            - fidoAssertion
          properties:
            enrollmentId:
              $ref: '#/components/schemas/enrollmentId'
            riskSignals:
              type: object
              required:
                - deviceId
                - isRootedDevice
                - screenBrightness
                - elapsedTimeSinceBoot
                - osVersion
                - userTimeZoneOffset
                - language
                - screenDimensions
                - accountTenure
              description: |
                Conjunto de sinais extraídos do dispositivo do usuário para ativação do consentimento de pagamento.
                A obrigatoriedade das informações variam de acordo com a plataforma utilizada.
              properties:
                deviceId:
                  type: string
                  description: |
                    ID único do dispositivo gerado pela plataforma.

                    Utiliza-se a propriedade do sistema que identifica a combinação de usuário logado, chave de assinatura do aplicativo e dispositivo.

                    [Android] Informação obtida através do [link](https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID).

                    [iOS] Informação obtida através do [link](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor/).
                isRootedDevice:
                  type: boolean
                  description: Indica se o dispositivo atualmente está com permissão de “root”.
                screenBrightness:
                  type: number
                  format: double
                  description: |
                    Indica o nível de brilho da tela do dispositivo.

                    [Android] O valor é inteiro, tipicamente entre 0 a 255, podendo a faixa de valores variar de acordo com o fabricante do celular. Referência no [link](https://developer.android.com/reference/android/provider/Settings.System#SCREEN_BRIGHTNESS).

                    [iOS] O valor é ponto flutuante entre “0.0” e “1.0”. Referência no [link](https://developer.apple.com/documentation/uikit/uiscreen/).
                elapsedTimeSinceBoot:
                  type: integer
                  format: int64
                  description: |
                    Indica por quanto tempo (em milissegundos) o dispositivo está ligado.

                    [Android] Informação obtida através do [link](https://developer.android.com/reference/android/os/SystemClock#elapsedRealtime%28%29).

                    [iOS] Informação obtida através do [link](https://developer.apple.com/documentation/kernel/kern/).
                osVersion:
                  type: string
                  description: |
                    Versão do sistema operacional.

                    [Android] Informação obtida através do [link](https://developer.android.com/reference/android/os/Build.VERSION#RELEASE).
                    [iOS] - Informação obtida através do [link](https://developer.apple.com/documentation/uikit/uidevice/1620043-systemversion/).
                userTimeZoneOffset:
                  type: string
                  description: |
                    Indica a configuração de fuso horário do dispositivo do usuário, com o formato UTC offset: ±hh[:mm]. O formato especificado permite a omissão da parte correspondente aos minutos, caso esta última tenha valor zero. Assim, ambos os valores '-03:00' e '-03' são válidos e representam o mesmo fuso horário.

                    [Android] Informação obtida através do [link](https://developer.android.com/reference/java/time/ZonedDateTime#getOffset()) ou, para versões anteriores à 8.0, [link](https://developer.android.com/reference/java/util/TimeZone#getOffset(long)).

                    [iOS] Informação obtida através do [link](https://developer.apple.com/documentation/foundation/timezone/).
                  example: '-03'
                language:
                  type: string
                  description: |
                    Indica o idioma do dispositivo no formato ISO 639-1.

                    [Android] Informação obtida através do [link](https://developer.android.com/reference/java/util/Locale#getLanguage()).
                    [iOS] - Informação obtida através do [link](https://developer.apple.com/documentation/foundation/locale/languagecode/).
                  example: 'pt'
                screenDimensions:
                  type: object
                  description: |
                    Dimensões que o aplicativo ocupa na tela do dispositivo.

                    [Android] Informação obtida através do [link](https://developer.android.com/reference/android/view/WindowMetrics#getBounds()), ou, para versões anteriores à 11, [link](https://developer.android.com/reference/android/util/DisplayMetrics).

                    [iOS] - Informação obtida através do [link](https://developer.apple.com/documentation/metal/mtlrasterizationratemap/3088873-screensize/).
                  required:
                    - height
                    - width
                  properties:
                    height:
                      type: integer
                      description: Altura da tela, em pixels.
                    width:
                      type: integer
                      description: Largura da tela, em pixels.
                accountTenure:
                  type: string
                  format: date
                  pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$'
                  description: Data de cadastro do cliente na iniciadora.
                  example: 2023-09-01
                geolocation:
                  type: object
                  description: |
                    Localização do usuário, obtida com seu consentimento.

                    [Android] Informação obtida através do [link](https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderClient#public-abstract-tasklocation-getlastlocation) considerando as permissões necessárias.

                    [iOS] Informação obtida através do [link](https://developer.apple.com/documentation/corelocation/).

                    [Restrição] A ITP deve solicitar ao usuário a permissão para compartilhamento de sua localização. Este campo poderá ser omitido caso o GPS esteja indisponível, isto é, sem sinal, ou em dispositivos sem o hardware necessário; ou caso o usuário negue o consentimento.
                  properties:
                    latitude:
                      type: number
                    longitude:
                      type: number
                    type:
                      type: string
                      enum:
                        - COARSE
                        - FINE
                        - INFERRED
                isCallingProgress:
                  type: boolean
                  description: |
                    Indica chamada ativa no momento do vínculo.

                    [Android] Informação obtida através do [link](https://developer.android.com/reference/android/media/AudioManager#getMode()).

                    [iOS] Informação obtida através do [link](https://developer.apple.com/documentation/callkit/).

                    [Restrição] Caso o sinal de risco esteja disponível (cliente permitiu que fosse coletado), o mesmo deverá ser enviado
                isDevModeEnabled:
                  type: boolean
                  description: Indica se o dispositivo está em modo de desenvolvedor.
                isMockGPS:
                  type: boolean
                  description: |
                    Indica se o dispositivo está usando um GPS falso. Deve ser enviado sempre que exista o campo geolocation com tipo `COARSE` ou `FINE`.

                    [Android] Informação obtida através do [link](https://developer.android.com/reference/android/location/Location.html#isMock()) ou, para versões anteriores à 12, [link](https://developer.android.com/reference/android/location/Location.html#isFromMockProvider()).

                    [iOS] Informação obtida através dos links:
                    sourceInformation, [link](https://developer.apple.com/documentation/corelocation/cllocation/3861803-sourceinformation).
                    isSimulatedBySoftware, [link](https://developer.apple.com/documentation/corelocation/cllocationsourceinformation/3861807-issimulatedbysoftware).
                isEmulated:
                  type: boolean
                  description: Indica se o dispositivo é emulado ou real.
                isMonkeyRunner:
                  type: boolean
                  description: Indica o uso do MonkeyRunner.
                isCharging:
                  type: boolean
                  description: |
                    Indica se a bateria do dispositivo está sendo carregada.

                    [Android] Informação obtida através do [link](https://developer.android.com/reference/android/os/BatteryManager).

                    [iOS] Informações obtida através do [link](https://developer.apple.com/documentation/uikit/uidevice/1620045-batterymonitoringenabled/).
                antennaInformation:
                  type: string
                  description: Indica em qual antena o dispositivo está conectado.
                isUsbConnected:
                  type: boolean
                  description: Indica se o dispositivo está conectado a outro dispositivo via USB.
                integrity:
                  type: object
                  description: |
                    Informa a integridade do dispositivo e app.

                    [Android] Conforme documentação Play API Integrity, [link](https://developer.android.com/google/play/integrity/overview?hl=pt-br).

                    [iOS] Conforme documentação App Attest, [link](https://developer.apple.com/documentation/devicecheck/establishing-your-app-s-integrity).
                  properties:
                    appRecognitionVerdict:
                      type: string
                      description: Informa a integridade do app
                    deviceRecognitionVerdict:
                      type: string
                      description: Informa a integridade do dispositivo
            fidoAssertion:
              type: object
              description: Dados da asserção
              required:
                - id
                - rawId
                - type
                - response
              properties:
                id:
                  type: string
                  description: Identificador da credencial. Deve ser o valor em formato base64url do campo rawId da chave pública utilizada no processo de autenticação.
                rawId:
                  type: string
                  description: Identificador da credencial. Para envio à detentora de conta, o valor deste atributo deve ser idêntico ao valor do atributo id.
                type:
                  type: string
                  description: Tipo da credencial.
                response:
                  type: object
                  description: Traz as informações da resposta a asserção.
                  required:
                    - clientDataJSON
                    - authenticatorData
                    - signature
                    - userHandle
                  properties:
                    clientDataJSON:
                      type: string
                      format: bytes
                      description: Agrega as informações do aplicativo que gerou a credencial. Deve ser enviado no formato base64url para a detentora de conta.
                    authenticatorData:
                      type: string
                      format: bytes
                      description: Representa a estrutura de dados do autenticador. Deve ser enviado no formato base64url para a detentora de conta.
                    signature:
                      type: string
                      format: bytes
                      description: Sequência de bytes contendo a assinatura. Deve ser enviado no formato base64url para a detentora de conta.
                    userHandle:
                      type: string
                      format: bytes
                      description: Nome de usuário que foi enviado durante a criação da credencial. Deve ser enviado no formato base64url para a detentora de conta.
                clientExtensionResults:
                  type: object
                  description: Estrutura para extensão de resultados
                  additionalProperties: true
    DebtorAccount:
      type: object
      description: |
        Objeto que contém a identificação da conta de origem do pagador.  
        As informações quanto à conta de origem do pagador poderão ser trazidas no vínculo para a detentora, caso a iniciadora tenha coletado essas informações do cliente. Do contrário, será coletada na detentora e trazida para a iniciadora como resposta à criação do vínculo.
      required:
        - ispb
        - number
        - accountType
      properties:
        ispb:
          type: string
          minLength: 8
          maxLength: 8
          pattern: '^[0-9]{8}$'
          example: '12345678'
          description: |
            Deve ser preenchido com o ISPB (Identificador do Sistema de Pagamentos Brasileiros) do participante do SPI (Sistema de pagamentos instantâneos) somente com números.
        issuer:
          type: string
          minLength: 1
          maxLength: 4
          pattern: '^[0-9]{1,4}$'
          example: '1774'
          description: |
            Código da Agência emissora da conta sem dígito.  
            (Agência é a dependência destinada ao atendimento aos clientes, ao público em geral e aos associados de cooperativas de crédito,  
            no exercício de atividades da instituição, não podendo ser móvel ou transitória).  
            [Restrição] Preenchimento obrigatório para os seguintes tipos de conta: CACC (CONTA_DEPOSITO_A_VISTA) e SVGS (CONTA_POUPANCA).
        number:
          type: string
          minLength: 1
          maxLength: 20
          pattern: '^[0-9]{1,20}$'
          example: '1234567890'
          description: |
            Deve ser preenchido com o número da conta transacional do usuário pagador, com dígito verificador (se este existir),  
            se houver valor alfanumérico, este deve ser convertido para 0.
        accountType:
          $ref: '#/components/schemas/EnumAccountPaymentsType'
    enrollmentId:
      type: string
      maxLength: 256
      pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$'
      example: 'urn:bancoex:C1DD33123'
      description: |
        Identificador único do vínculo de conta criado para a iniciação de pagamento solicitada. Deverá ser um URN - Uniform Resource Name.
        Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource
        Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN
        seja um identificador de recurso persistente e independente da localização.
        Considerando a string urn:bancoex:C1DD33123 como exemplo para enrollmentId temos:
        - o namespace(urn)
        - o identificador associado ao namespace da instituição detentora de conta (bancoex)
        - o identificador específico dentro do namespace (C1DD33123).
        Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141).
    consentId:
      type: string
      maxLength: 256
      pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$'
      description: |
        O consentId é o identificador único do consentimento e deverá ser um URN - Uniform Resource Name.  
        Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource 
        Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN 
        seja um identificador de recurso persistente e independente da localização.  
        Considerando a string urn:bancoex:C1DD33123 como exemplo para consentId temos:
        - o namespace(urn)
        - o identificador associado ao namespace da instituição detentora de conta (bancoex) 
        - o identificador específico dentro do namespace (C1DD33123).  
        Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141).
    EnrollmentRejectionReason:
      type: string
      enum:
      - REJEITADO_TEMPO_EXPIRADO_RISK_SIGNALS
      - REJEITADO_TEMPO_EXPIRADO_ACCOUNT_HOLDER_VALIDATION
      - REJEITADO_TEMPO_EXPIRADO_ENROLLMENT
      - REJEITADO_MAXIMO_CHALLENGES_ATINGIDO
      - REJEITADO_MANUALMENTE
      - REJEITADO_DISPOSITIVO_INCOMPATIVEL
      - REJEITADO_FALHA_INFRAESTRUTURA
      - REJEITADO_FALHA_HYBRID_FLOW
      - REJEITADO_FALHA_FIDO
      - REJEITADO_SEGURANCA_INTERNA
      - REJEITADO_OUTRO
      description: |
        Indica o motivo do cancelamento do vínculo de conta. Valores possíveis:

        • REJEITADO_TEMPO_EXPIRADO_RISK_SIGNALS: Expiração automática devido a timeout no status "AWAITING_RISK_SIGNALS". O envio de sinais de risco não foi concluído.
        
        • REJEITADO_TEMPO_EXPIRADO_ACCOUNT_HOLDER_VALIDATION: Expiração automática devido a timeout no status "AWAITING_ACCOUNT_HOLDER_VALIDATION". O processo de redirecionamento não foi concluído com sucesso.
        
        • REJEITADO_TEMPO_EXPIRADO_ENROLLMENT: Expiração automática devido a timeout no status "AWAITING_ENROLLMENT". O processo de criação e envio de credenciais FIDO2 não foi concluído com sucesso.
        
        • REJEITADO_MAXIMO_CHALLENGES_ATINGIDO: Vínculo de conta rejeitado devido várias tentativas vínculo frustradas.
        
        • REJEITADO_MANUALMENTE: Cancelamento manual, explicitamente a pedido do usuário.
        
        • REJEITADO_DISPOSITIVO_INCOMPATIVEL: Dispositivo não suporta o protocolo FIDO.
        
        • REJEITADO_FALHA_INFRAESTRUTURA: Falha na infraestrutura na detentora.
        
        • REJEITADO_SEGURANCA_INTERNA: Vínculo de conta rejeitado devido à política de segurança de instituição detentora ou iniciadora considerando a análise dos sinais de risco.
        
        • REJEITADO_FALHA_HYBRID_FLOW: Vínculo de conta rejeitado por falha técnica no processo de redirecionamento (por exemplo: troca de authorization code por access token no FAPI Hybrid flow)
        
        • REJEITADO_FALHA_FIDO: Vínculo de conta rejeitado por falha técnica no processo de validação ou associação da credencial pública FIDO.
        
        • REJEITADO_OUTRO: Outros motivos não descritos pelas demais. Indicar, neste caso, o motivo em "additionalInformation".
    EnrollmentRevocationReason:
      type: string
      enum:
      - REVOGADO_MANUALMENTE
      - REVOGADO_VALIDADE_EXPIRADA
      - REVOGADO_FALHA_INFRAESTRUTURA
      - REVOGADO_SEGURANCA_INTERNA
      - REVOGADO_OUTRO
      description: |
        Indica o motivo do cancelamento do vínculo de conta. Valores possíveis:

        • REVOGADO_MANUALMENTE: Cancelamento manual, explicitamente a mando do usuário.
        
        • REVOGADO_VALIDADE_EXPIRADA: Expiração automática ao atingir o prazo limite do vínculo de conta.
        
        • REVOGADO_FALHA_INFRAESTRUTURA: Falha na infraestrutura na detentora.
        
        • REVOGADO_SEGURANCA_INTERNA: Vínculo de conta rejeitado devido à políticas de segurança tanto da iniciadora quanto da detentora.
        
        • REVOGADO_OUTRO: Outros motivos não descritos pelas demais. Indicar, neste caso, o motivo em "additionalInformation".
    EnrollmentFidoRegistration:
      type: object
      description: Objeto que contém a resposta da criação de uma nova credencial FIDO2.
      required:
        - data
      properties:
        data:
          type: object
          required:
            - id
            - rawId
            - response
          properties:
            id:
              type: string
              description: Identificador da credencial. Deve ser o valor em formato base64url do campo rawId da chave pública criada no processo de registro do dispositivo.
            rawId:
              type: string
              description: Identificador da credencial. Para envio ao detentor, o valor deste atributo deve ser idêntico ao valor do atributo id.
            response:
              type: object
              required:
                - clientDataJSON
                - attestationObject
              properties:
                clientDataJSON:
                  type: string
                  format: bytes
                  description: Agrega as informações do aplicativo que gerou a credencial. Deve ser enviado em formato base64url para o detentor.
                  example: eyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiTVRBeU16azRhMkZxYUhOclpHcG9ZV3R6Iiwib3JpZ2luIjoiaHR0cHM6Ly93d3cudzMub3JnIiwiY3Jvc3NPcmlnaW4iOmZhbHNlfQ==
                attestationObject:
                  type: string
                  format: bytes
                  description: Agrega as informações da chave pública da credencial. Deve ser enviado em formato base64url para o detentor.
                  example: o2NmbXRoZmlkby11MmZnYXR0U3RtdKJjc2lnWEcwRQIgZyUMtm43lCCqzoIbSDeoCUpJzh/VSchwQNxFR2UM/DsCIQDWpp4+/nklI7G2HPVZCIqw08R9omcn9kJrKPsuIO5k22N4NWOBWQFIMIIBRDCB6qADAgECAgkBcwb/////QwMwCgYIKoZIzj0EAwIwGzEZMBcGA1UEAxMQR251YmJ5IEhTTSBDQSAwMDAiGA8yMDEyMDYwMTAwMDAwMFoYDzIwNjIwNTMxMjM1OTU5WjAwMRkwFwYDVQQDExBHb29nbGUgR251YmJ5IHYwMRMwEQYDVQQtAwoAAXMG/////0MDMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAELuWVatmVMfAOr53T6fh7X/iIgqKz5SCnKTBUnFo3FtbbslUGi8Qetr1nbyr6BVqGHqcJiXyvF6rVbj5fZqbiBTAKBggqhkjOPQQDAgNJADBGAiEA5GaaFxllkOr24b5s6Qu/4ch3ZgU+3GIAv/D8kj4EGMgCIQDXYfaVAMe7Jzht3ra4TaCKKpaUxp+nRkIO/SKiQZPjgmhhdXRoRGF0YVjEIYvQ2gJvAWdQFFLPcpStJJWLnFoQO0f5vT1T51P/rm5BAAAAAAAAAAAAAAAAAAAAAAAAAAAAQCJ8iR8CqPctr4tz/YAICs6bDwVqhDzdt3oohVVWRQruy+E1AFeEWgPMWsIS4UU0n+sRGW3m2K90z1d9ujtFPxylAQIDJiABIVggaUaH0XDx9F2UOrT0ao02wL+xjGR/BxnCB4WOU2w0H8YiWCATuK2PUWGPophwPsfNIC3CZw4TGlCMEq1R15cw1w5KDg==
            authenticatorAttachment:
              type: string
              description: Indica a forma de comunicação com o autenticador.
              example: platform, cross-platform
            type:
              type: string
              description: Tipo da credencial
              example: public-key
            clientExtensionResults:
              type: object
              description: Extensões da credencial, específicas por plataforma
              additionalProperties: true
    EnrollmentFidoOptionsInput:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          description: |
            Objeto que contém as informações sobre a Relying Party e a plataforma sobre a qual o usuário está utilizando o serviço da iniciadora para utilização de FIDO2.
          required:
            - rp
            - platform
          properties:
            rp:
              type: string
              description: Identificador único da Relying Party, que corresponde ao valor do CN do certificado de transporte da iniciadora.
            platform:
              type: string
              description: |
                Indica a plataforma em que o usuário está utilizando a credencial FIDO2. 
                Este campo permite que o servidor FIDO inclua extensões de acordo com a plataforma utilizada.
              enum:
                - ANDROID
                - BROWSER
                - CROSS_PLATFORM
                - IOS
    EnrollmentFidoRegistrationOptions:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          type: object
          description: Objeto que contém as informações necessárias para registro de uma nova credencial FIDO2.
          required:
            - enrollmentId
            - rp
            - user
            - challenge
            - pubKeyCredParams
          properties:
            enrollmentId:
              $ref: '#/components/schemas/enrollmentId'
            rp:
              $ref: '#/components/schemas/FidoRelyingParty'
            user:
              $ref: '#/components/schemas/FidoUser'
            challenge:
              type: string
              format: byte
              description: Sequência de bytes aleatórios gerados pelo servidor FIDO2. Deve ser o valor em formato base64url sem padding.
            pubKeyCredParams:
              type: array
              items:
                $ref: '#/components/schemas/FidoPublicKeyCredentialCreationOptions'
            timeout:
              type: integer
              description: Timeout, em milissegundos, para registro da credencial FIDO2.
            excludeCredentials:
              type: array
              items:
                $ref: '#/components/schemas/FidoPublicKeyCredentialDescriptor'
            authenticatorSelection:
              $ref: '#/components/schemas/FidoAuthenticatorSelectionCriteria'
            attestation:
              type: string
              description: Indica o tipo de attestation que o autenticador pode utilizar.
              example: none, indirect, direct, enterprise
            attestationFormats:
              type: array
              description: Indica as preferências de formato sobre o campo attestation.
              items:
                type: string
                example: packed, tpm, android-key, android-safetynet, fido-u2f, apple, none
            extensions:
              type: object
              description: Campo de extensão com opções que variam por plataforma.
              additionalProperties: true
        meta:
          $ref: '#/components/schemas/Meta'
    EnrollmentFidoSignOptions:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          type: object
          description: Objeto que contém as informações necessárias para assinatura com uma credencial FIDO2 previamente registrada.
          required:
            - challenge
          properties:
            challenge:
              type: string
              format: byte
              description: Sequência de bytes aleatórios gerados pelo servidor FIDO2. Deve ser o valor em formato base64url sem padding.
            timeout:
              type: integer
              format: int32
              description: Expiração, em milissegundos, do challenge.
            rpId:
              type: string
              description: Identificador da Relying Party.
            allowCredentials:
              type: array
              items:
                $ref: '#/components/schemas/FidoPublicKeyCredentialDescriptor'
            userVerification:
              type: string
              example: required, preferred, discouraged
            extensions:
              type: object
              description: Campo de extensão com opções que variam por plataforma.
              additionalProperties: true
        meta:
          $ref: '#/components/schemas/Meta'
    EnumAccountPaymentsType:
      type: string
      enum:
        - CACC
        - SVGS
        - TRAN
      example: CACC
      description: |
        Tipos de contas usadas para pagamento via Pix.  
        Modalidades tradicionais previstas pela Resolução 4.753, não contemplando contas vinculadas,  
        conta de domiciliados no exterior, contas em moedas estrangeiras e conta correspondente moeda eletrônica.  
        Segue descrição de cada valor do ENUM para o escopo do Pix.  
        CACC - Current - Conta Corrente.    
        SVGS - Savings - Conta de Poupança.  
        TRAN - TransactingAccount - Conta de Pagamento pré-paga.
    EnumEnrollmentPermission:
      type: string
      enum:
        - PAYMENTS_INITIATE
      example: PAYMENTS_INITIATE
      description: |
        Permissões atribuídas ao vínculo de conta:
        
        • PAYMENTS_INITIATE: Iniciação de pagamentos sem redirecionamento à detentora.
    EnumEnrollmentCancelledFrom:
      type: string
      enum:
        - INICIADORA
        - DETENTORA
      description: |
        Campo utilizado para informar o meio pelo qual foi realizado o cancelamento do vínculo de conta. Valores possíveis:
        
          INICIADORA - Vínculo de conta nos canais da iniciadora.

          DETENTORA - Vínculo de conta nos canais da detentora.
    EnumEnrollmentStatus:
      type: string
      enum:
        - AWAITING_RISK_SIGNALS
        - AWAITING_ACCOUNT_HOLDER_VALIDATION
        - AWAITING_ENROLLMENT
        - AUTHORISED
        - REVOKED
        - REJECTED
      description: |
        Status do vínculo de conta:

        • AWAITING_RISK_SIGNALS: Vínculo de conta criado e aguardando envio dos sinais de risco para a dentora.
        
        • AWAITING_ACCOUNT_HOLDER_VALIDATION: Vínculo de conta aguardando autorização no ambiente da detentora.
        
        • AWAITING_ENROLLMENT: Vínculo de conta autorizado no ambiente da detentora e aguardando o vínculo de credenciais (FIDO2).
        
        • AUTHORISED: Vínculo de conta pronto para uso.
        
        • REVOKED: Vínculo de conta revogado.
        
        • REJECTED: Vínculo de conta rejeitado.
    FidoAuthenticatorSelectionCriteria:
      type: object
      description: Restrições adicionais sobre os tipos de autenticadores permitidos para o registro.
      properties:
        authenticatorAttachment:
          type: string
          description: 'Indica os tipos de autenticadores suportados (ex: Sistema Operacional ou Cross-Platform como uma chave USB)'
          example: platform, cross-platform
        userVerification:
          type: string
          description: Indica o tipo de "discoverability" da credencial.
          example: discouraged, preferred, required
        requireResidentKey:
          type: boolean
          description: Indica o requisito de verificação do usuário.
        residentKey:
          type: string
          description: Indica o requisito de verificação do usuário.
    FidoRelyingParty:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: string
          description: Identificador único da Relying Party. Esse campo deve ser preenchido com o valor que é enviado na requisição no campo /data/rp.
        name:
          type: string
          description: Nome amigável da Relying Party para exibição aos usuários. Pode ser obtido através do Software Statement Assertion, atributo software_client_name.
    FidoUser:
      type: object
      required:
        - id
        - name
        - displayName
      properties:
        id:
          type: string
          description: Identificador único do usuário sob registro em formato base64. A conversão deste valor para o formato original (BufferSource ou ArrayBuffer) não deve ultrapassar 64 bytes.
        name:
          type: string
          description: Identificador do usuário human-readable.
        displayName:
          type: string
          description: Identificador do usuário para fins de apresentação.
    FidoPublicKeyCredentialCreationOptions:
      type: object
      required:
        - alg
        - type
      properties:
        alg:
          type: integer
          description: Identificador do algoritmo (COSE)
          example: -7
        type:
          type: string
          description: Identificador do tipo de credencial.
          example: public-key
    FidoPublicKeyCredentialDescriptor:
      type: object
      required:
        - id
        - type
      properties:
        id:
          type: string
          description: Identificador único da credencial.
        type:
          type: string
          description: Identificador do tipo de credencial.
          example: public-key
    LoggedUser:
      type: object
      description: Usuário (pessoa natural) que encontra-se logado na iniciadora.
      required:
        - document
      properties:
        document:
          type: object
          required:
            - identification
            - rel
          properties:
            identification:
              type: string
              maxLength: 11
              description: Número do documento de identificação oficial do usuário.
              example: '11111111111'
              pattern: '^\d{11}$'
            rel:
              type: string
              maxLength: 3
              description: Tipo do documento de identificação oficial do usuário.
              example: CPF
              pattern: '^[A-Z]{3}$'
    Meta:
      type: object
      description: Meta informação referente a API requisitada.
      required:
        - requestDateTime
      properties:
        requestDateTime:
          description: 'Data e hora da consulta, conforme especificação RFC-3339, timezone UTC(UTC time format).'
          type: string
          maxLength: 20
          format: date-time
          example: '2023-07-12T08:30:00Z'
    LinkSingle:
      type: object
      description: Referências para outros recusos da API requisitada.
      required:
        - self
      properties:
        self:
          type: string
          format: url
          maxLength: 2000
          description: URI completo que gerou a resposta atual.
          example: 'https://api.banco.com.br/open-banking/api/v2/resource'
    ResponseError:
      type: object
      required:
        - errors
      properties:
        errors:
          type: array
          minItems: 1
          maxItems: 13
          items:
            type: object
            required:
              - code
              - title
              - detail
            properties:
              code:
                description: Código de erro específico do endpoint
                type: string
                pattern: '[\w\W\s]*'
                maxLength: 255
              title:
                description: Título legível por humanos deste erro específico
                type: string
                pattern: '[\w\W\s]*'
                maxLength: 255
              detail:
                description: Descrição legível por humanos deste erro específico
                type: string
                pattern: '[\w\W\s]*'
                maxLength: 2048
        meta:
          type: object
          description: Meta informações referente à API requisitada.
          required:
            - requestDateTime
          properties:
            requestDateTime:
              description: 'Data e hora da consulta, conforme especificação RFC-3339, timezone UTC(UTC time format).'
              type: string
              maxLength: 20
              format: date-time
              example: '2023-07-12T08:30:00Z'
    ResponseCreateEnrollment:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          type: object
          description: Objeto contendo as informações de resposta da criação de vínculo de conta.
          required:
            - enrollmentId
            - creationDateTime
            - status
            - statusUpdateDateTime
            - permissions
            - expirationDateTime
            - loggedUser
          properties:
            enrollmentId:
              $ref: '#/components/schemas/enrollmentId'
            creationDateTime:
              type: string
              format: date-time
              example: '2023-07-12T08:30:00Z'
              pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$'
              maxLength: 20
              description: O instante em que o vínculo de conta foi criado no ambiente da detentora.
            status:
              $ref: '#/components/schemas/EnumEnrollmentStatus'
            statusUpdateDateTime:
              type: string
              format: date-time
              example: '2023-07-12T08:30:00Z'
              pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$'
              maxLength: 20
              description: O instante em que ocorreu a última alteração de status do vínculo de conta.
            permissions:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/EnumEnrollmentPermission'
            expirationDateTime:
              type: string
              format: date-time
              example: '2023-07-12T08:30:00Z'
              pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$'
              maxLength: 20
              description: O instante de expiração deste vínculo de conta, de acordo com a regulação vigente.
            loggedUser:
              $ref: '#/components/schemas/LoggedUser'
            businessEntity:
              $ref: '#/components/schemas/BusinessEntity'
            debtorAccount:
              $ref: '#/components/schemas/DebtorAccount'
        links:
          $ref: '#/components/schemas/LinkSingle'
        meta:
          $ref: '#/components/schemas/Meta'
    ResponseEnrollment:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          type: object
          description: Objeto que agrupa as informações de qual foi o usuário logado que solicitou o cancelamento do vínculo de conta.
          required:
            - enrollmentId
            - creationDateTime
            - status
            - statusUpdateDateTime
            - permissions
            - expirationDateTime
            - loggedUser
          properties:
            enrollmentId:
              $ref: '#/components/schemas/enrollmentId'
            creationDateTime:
              type: string
              format: date-time
              example: '2023-07-12T08:30:00Z'
              pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$'
              maxLength: 20
              description: O instante em que o vínculo de conta foi criado no ambiente da detentora.
            status:
              $ref: '#/components/schemas/EnumEnrollmentStatus'
            statusUpdateDateTime:
              type: string
              format: date-time
              example: '2023-07-12T08:30:00Z'
              pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$'
              maxLength: 20
              description: O instante em que ocorreu a última alteração de status do vínculo de conta.
            permissions:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/EnumEnrollmentPermission'
            expirationDateTime:
              type: string
              format: date-time
              example: '2023-07-12T08:30:00Z'
              pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$'
              maxLength: 20
              description: O instante de expiração deste vínculo de conta, de acordo com a regulação vigente.
            loggedUser:
              $ref: '#/components/schemas/LoggedUser'
            businessEntity:
              $ref: '#/components/schemas/BusinessEntity'
            debtorAccount:
              allOf:
                - $ref: '#/components/schemas/DebtorAccount'
                - type: object
                  description: |
                    Objeto que contém a identificação da conta de origem do pagador.  
                    As informações quanto à conta de origem do pagador poderão ser trazidas no vínculo para a detentora, caso a iniciadora tenha coletado essas informações do cliente. Do contrário, será coletada na detentora e trazida para a iniciadora como resposta à criação do vínculo. 
                    
                    [ Restrição ] Deve obrigatoriamente ser preenchido nos status AWAITING_ENROLLMENT, AUTHORISED e REVOKED e não deve ser alterado.
            cancellation:
              type: object
              required:
                - cancelledFrom
                - reason
              properties:
                cancelledBy:
                  type: object
                  description: |
                    Informação relacionada ao usuário pagador que solicitou o cancelamento do vínculo de conta.
                    Pode estar ausente em cenários de processos automatizados realizarem o cancelamento do vínculo, por exemplo, por data de expiração.
                  required:
                    - document
                  properties:
                    document:
                      type: object
                      description: Objeto que consolida os dados do documento do usuário que solicitou o cancelamento.
                      required:
                        - identification
                        - rel
                      properties:
                        identification:
                          type: string
                          maxLength: 11
                          description: Número do documento do usuário responsável pelo cancelamento do vínculo de conta.
                          example: '11111111111'
                          pattern: '^\d{11}$'
                        rel:
                          type: string
                          maxLength: 3
                          description: Tipo do documento do usuário responsável pelo cancelamento do vínculo de conta.
                          example: CPF
                          pattern: '^[A-Z]{3}$'
                reason:
                  oneOf:
                    - type: object
                      required:
                      - rejectionReason
                      description: Motivo da rejeição do vínculo de conta.
                      properties:
                        rejectionReason:
                          $ref: '#/components/schemas/EnrollmentRejectionReason'
                    - type: object
                      required:
                      - revocationReason
                      description: Motivo da revogação do vínculo de conta.
                      properties:
                        revocationReason:
                          $ref: '#/components/schemas/EnrollmentRevocationReason'
                additionalInformation:
                  type: string
                  pattern: '[\w\W\s]*'
                  example: Contrato entre iniciadora e detentora interrompido
                  maxLength: 2048
                cancelledFrom:
                  $ref: '#/components/schemas/EnumEnrollmentCancelledFrom'
                rejectedAt:
                  type: string
                  format: date-time
                  example: '2023-07-12T08:30:00Z'
                  pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$'
                  maxLength: 20
                  description: Instante de rejeição do vínculo de conta no ambiente da detentora.     
            transactionLimit:
              type: string
              minLength: 4
              maxLength: 19
              pattern: '^((\d{1,16}\.\d{2}))$'
              example: '100000.12'
              description: |
                Valor máximo, por transação, admitido para este vínculo de conta. Este limite não garante a autorização de iniciações de pagamento;
                servindo como referência para a iniciadora evitar a criação de consentimentos de valores tais que, garantidamente, não serão autorizados.

                [Restrição] Campo de preenchimento obrigatório pelos participantes quando o campo `status` for preenchido com os valores `AUTHORISED` ou `AWAITING_ENROLLMENT`.
            dailyLimit:
              type: string
              minLength: 4
              maxLength: 19
              pattern: '^((\d{1,16}\.\d{2}))$'
              example: '100000.12'
              description: |
                Limite diário cumulativo para este vínculo de conta. Este limite não garante a autorização de iniciações de pagamento;
                servindo como referência para a iniciadora evitar a criação de consentimentos para valores tais que, garantidamente, não serão autorizados.

                [Restrição] Campo de preenchimento obrigatório pelos participantes quando o campo `status` for preenchido com os valores `AUTHORISED` ou `AWAITING_ENROLLMENT`.
        links:
          $ref: '#/components/schemas/LinkSingle'
        meta:
          $ref: '#/components/schemas/Meta'
    XFapiInteractionId:
      type: string
      format: uuid
      minLength: 1
      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
  parameters:
    consentId:
      name: consentId
      in: path
      description: |
        O consentId é o identificador único do consentimento e deverá ser um URN - Uniform Resource Name.  
        Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource 
        Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN 
        seja um identificador de recurso persistente e independente da localização.  
        Considerando a string urn:bancoex:C1DD33123 como exemplo para consentId temos:
        - o namespace(urn)
        - o identificador associado ao namespace da instituição detentora de conta (bancoex) 
        - o identificador específico dentro do namespace (C1DD33123).  
        Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141).
      required: true
      schema:
        type: string
        pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$'
        maxLength: 256
    enrollmentId:
      name: enrollmentId
      in: path
      required: true
      description: |
        Identificador único do vínculo de conta criado para a iniciação de pagamento solicitada. Deverá ser um URN - Uniform Resource Name.
        Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource
        Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN
        seja um identificador de recurso persistente e independente da localização.
        Considerando a string urn:bancoex:C1DD33123 como exemplo para enrollmentId temos:
        - o namespace(urn)
        - o identificador associado ao namespace da instituição detentora de conta (bancoex)
        - o identificador específico dentro do namespace (C1DD33123).
        Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141).
      schema:
        $ref: '#/components/schemas/enrollmentId'
    Authorization:
      name: Authorization
      in: header
      description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado
      required: true
      schema:
        type: string
        pattern: '[\w\W\s]*'
        maxLength: 2048
    xCustomerUserAgent:
      name: x-customer-user-agent
      in: header
      description: Indica o user-agent que o usuário utiliza.
      required: false
      schema:
        type: string
        pattern: '[\w\W\s]*'
        minLength: 1
        maxLength: 100
    xFapiAuthDate:
      name: x-fapi-auth-date
      in: header
      description: 'Data em que o usuário logou pela última vez com a iniciadora. Representada de acordo com a [RFC7231](https://tools.ietf.org/html/rfc7231).Exemplo: Sun, 10 Sep 2017 19:43:31 UTC'
      required: false
      schema:
        type: string
        pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$'
        minLength: 29
        maxLength: 29
    xFapiCustomerIpAddress:
      name: x-fapi-customer-ip-address
      in: header
      description: O endereço IP do usuário se estiver atualmente logado com a iniciadora.
      required: false
      schema:
        type: string
        pattern: '[\w\W\s]*'
        minLength: 1
        maxLength: 100
    xFapiInteractionId:
      name: x-fapi-interaction-id
      in: header
      description: Um UUID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela iniciadora (client) e o seu valor deve ser "espelhado" pela detentora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a detentora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP status code 400. A iniciadora deve acatar o valor recebido da detentora.
      required: true
      schema:
        type: string
        format: uuid
        minLength: 1
        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
    XIdempotencyKey:
      name: x-idempotency-key
      in: header
      description: Cabeçalho HTTP personalizado. Identificador de solicitação exclusivo para suportar a idempotência.
      required: true
      schema:
        type: string
        maxLength: 40
        pattern: ^(?!\s)(.*)(\S)$
  securitySchemes:
    OpenId:
      type: openIdConnect
      openIdConnectUrl: 'https://auth.mockbank.poc.raidiam.io/.well-known/openid-configuration'
    OAuth2ClientCredentials:
      type: oauth2
      description: |
        Fluxo OAuth necessário para que a iniciadora possa iniciar pagamentos. Requer o processo de redirecionamento e autenticação do usuário.  
        Apenas pagamentos iniciados pela mesma iniciadora podem ser consultados ou cancelados através de modelo client credentials.
      flows:
        clientCredentials:
          tokenUrl: 'https://authserver.example/token'
          scopes:
            payments: Escopo necessário para acesso à API Payment Initiation.
    OAuth2AuthorizationCode:
      type: oauth2
      description: Fluxo OAuth necessário para que a iniciadora possa iniciar pagamentos. Requer o processo de redirecionamento e autenticação do usuário.
      flows:
        authorizationCode:
          authorizationUrl: 'https://authserver.example/token'
          tokenUrl: 'https://authserver.example/token'
          scopes:
            payments: Escopo necessário para acesso à API Payment Initiation.
            openid: Indica que a autorização está sendo realizada utilizando o protocolo definido pela openid.
            'enrollment:enrollmentId': Permite realizar atualização de um registro com a permissão do cliente.      
            nrp-consents: Consentimento para pagamentos sem redirecionamento.
  responses:
    BadRequest:
      description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.'
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionIdBadRequest'
    Forbidden:
      description: O token tem escopo incorreto ou uma política de segurança foi violada
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
    ForbiddenEnrollments:
      description: |
        O token tem escopo incorreto ou uma política de segurança foi violada.
        Esta política de segurança também envolve os casos em que a iniciadora de pagamento não possui contrato bilateral ativo com a detentora de conta.
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
    InternalServerError:
      description: Ocorreu um erro no gateway da API ou no microsserviço
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    MethodNotAllowed:
      description: O consumidor tentou acessar o recurso com um método não suportado
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
    NotAcceptable:
      description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
    NotFound:
      description: O recurso solicitado não existe ou não foi implementado
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
    SiteIsOverloaded:
      description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.'
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    UnprocessableEntityConsentsAuthorization:
      description: 'A solicitação foi bem-formada, mas não pôde ser processada devido à lógica de negócios específica da solicitação.'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/422ResponseConsentsAuthorization'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
    UnprocessableEntityEnrollment:
      description: 'A solicitação foi bem-formada, mas não pôde ser processada devido à lógica de negócios específica da solicitação.'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/422ResponseErrorCreateEnrollment'
          examples:
            Permissões inválidas:
              summary: Permissões inválidas
              value:
                errors:
                  - code: PERMISSOES_INVALIDAS
                    title: Permissões inválidas
                    detail: 'As permissões associadas ao vínculo de conta não contêm "PAYMENTS_INITIATE" ou contém valores não suportados para esta operação.'
                meta:
                  requestDateTime: '2023-07-12T08:30:00Z'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
    UnprocessableEntityEnrollmentCancel:
      description: 'A solicitação foi bem-formada, mas não pôde ser processada devido à lógica de negócios específica da solicitação.'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/422ResponseErrorCancelEnrollment'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
    UnprocessableEntityEnrollmentFidoRegistrationOptions:
      description: 'A solicitação foi bem-formada, mas não pôde ser processada devido à lógica de negócios específica da solicitação.'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/422ResponseErrorFidoRegistrationOptions'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
    UnprocessableEntityEnrollmentRiskSignals:
      description: 'A solicitação foi bem-formada, mas não pôde ser processada devido à lógica de negócios específica da solicitação.'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/422ResponseErrorRiskSignals'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
    UnprocessableEntityEnrollmentFidoSignOptions:
      description: 'A solicitação foi bem-formada, mas não pôde ser processada devido à lógica de negócios específica da solicitação.'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/422ResponseErrorFidoSignOptions'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
    UnprocessableEntityEnrollmentFidoRegistration:
      description: |
        A solicitação foi bem-formada, mas não pôde ser processada devido à lógica de negócios específica da solicitação.
        A falha de verificação da credencial FIDO2 deve causar a rejeição do vínculo de conta por parte da detentora, uma vez que não é possível reusar um mesmo "challenge" para mais de um registro.
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/422ResponseErrorFidoRegistration'
    Unauthorized:
      description: Cabeçalho de autenticação ausente/inválido ou token inválido
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
    UnsupportedMediaType:
      description: O formato do payload não é um formato suportado.
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
    201EnrollmentsCreated:
      description: Vínculo de conta criado com sucesso.
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/ResponseCreateEnrollment'
    200EnrollmentsEnrollmentIdRead:
      description: Dados do vínculo de conta obtidos com sucesso.
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/ResponseEnrollment'
    204EnrollmentsEnrollmentIdDelete:
      description: Vínculo de conta revogado com sucesso.
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
    204EnrollmentsFidoRegistration:
      description: Credenciais FIDO2 validadas e associadas ao vínculo de conta.
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
    204PaymentsConsentsAuthorized:
      description: Sinais de risco recebidos com êxito.
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
    204EnrollmentsRiskSignals:
      description: Sinais de risco recebidos com êxito.
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
    201EnrollmentFidoRegistrationOptions:
      description: Dados para criação de uma nova credencial FIDO2.
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/EnrollmentFidoRegistrationOptions'
    201EnrollmentFidoSignOptions:
      description: Dados para autenticação a partir de uma credencial FIDO2.
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/xFapiInteractionId'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/EnrollmentFidoSignOptions'